{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h1 align = 'center'> 学会观察 </h1>\n",
    "\n",
    "<h2 align = 'center'> 第10部分:统治世界 </h2>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导入数据和支持功能"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    }
   ],
   "source": [
    "# 在Jupyter Notebook中启用matplotlib的内联模式\n",
    "%pylab inline\n",
    "\n",
    "# 导入自定义支持函数模块和pickle模块\n",
    "from supportFunctions import *\n",
    "import time\n",
    "import itertools\n",
    "# 导入 pickle 库，并使用别名 cPickle\n",
    "import pickle as cPickle\n",
    "\n",
    "# 定义 pickle 文件的文件名\n",
    "pickleFileName = 'data/fingerDataSet' + '.pickle'\n",
    "\n",
    "# 以二进制读模式打开 pickle 文件，使用 latin1 编码\n",
    "with open(pickleFileName, 'rb') as pickleFile:\n",
    "    # 使用 pickle.load() 从 pickle 文件中加载数据\n",
    "    data = cPickle.load(pickleFile, encoding='latin1')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# 仅使用3张图像作为训练数据：\n",
    "trainingExampleIndices = [7, 30, 46]\n",
    "\n",
    "# 从数据中提取训练示例\n",
    "trainingExamples = [data[index] for index in trainingExampleIndices]\n",
    "trainX, trainY = extractExamplesFromList(trainingExamples, whichImage='image1bit', dist=4)\n",
    "\n",
    "# 并使用两张图像进行测试：\n",
    "testingExampleIndices = [40, 41]\n",
    "\n",
    "# 从数据中提取测试示例\n",
    "testingExamples = [data[index] for index in testingExampleIndices]\n",
    "testX, testY = extractExamplesFromList(testingExamples, whichImage='image1bit', dist=4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 通过考虑由2个像素组合而成的所有可能的规则，搜索2个像素的图案。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Time elapsed = 1.411 seconds.\n"
     ]
    }
   ],
   "source": [
    "rules = []\n",
    "numErrors = []\n",
    "startTime = time.time()\n",
    "\n",
    "# 遍历所有可能的规则组合\n",
    "for i in range(81):\n",
    "    for j in range(81):\n",
    "        if i != j:\n",
    "            # 不是 i 且不是 j 的情况：\n",
    "            yHat = np.logical_and(trainX[:, i] == 0, trainX[:, j] == 0)\n",
    "            numErrors.append(sum(abs(yHat - trainY)))\n",
    "            rules.append([i, j, 0, 0])\n",
    "\n",
    "            # i 且不是 j 的情况：\n",
    "            yHat = np.logical_and(trainX[:, i] == 1, trainX[:, j] == 0)\n",
    "            numErrors.append(sum(abs(yHat - trainY)))\n",
    "            rules.append([i, j, 1, 0])\n",
    "\n",
    "            # 不是 i 且 j 的情况：\n",
    "            yHat = np.logical_and(trainX[:, i] == 0, trainX[:, j] == 1)\n",
    "            numErrors.append(sum(abs(yHat - trainY)))\n",
    "            rules.append([i, j, 0, 1])\n",
    "\n",
    "            # i 且 j 的情况：\n",
    "            yHat = np.logical_and(trainX[:, i] == 1, trainX[:, j] == 1)\n",
    "            numErrors.append(sum(abs(yHat - trainY)))\n",
    "            rules.append([i, j, 1, 1])\n",
    "\n",
    "timeElapsed = time.time() - startTime\n",
    "print('Time elapsed = ' + str(round(timeElapsed, 3)) + ' seconds.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "478"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 找到最小误差对应的索引\n",
    "np.argmin(np.array(numErrors))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "25920"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算规则列表的长度\n",
    "len(rules)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "25920"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算误差数量列表的长度\n",
    "len(numErrors)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[1, 40, 0, 1]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 获取索引为478的规则\n",
    "rules[478]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x1987a61aec8>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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vXv3xooVK6KzszNKpVJs37692SPVraenJy699NJob2+PKVOmxMc+9rF47rnnmj1WXTZv3hzz588f+ulQixcvjh07djR7rDGxadOmKJVKsW7dumaPUpfPfe5zUSqVhi1z5sxp9lh1+/GPfxyf+MQn4txzz42JEyfGRRddFPv372/2WDWbOXPmG74vpVIpuru7mz1azQYGBuKWW26JWbNmxcSJE2P27Nlx2223nfYXp5wJ6YL+1a9+NdavXx8bN26MgwcPxoIFC+Kqq66KY8eONXu0mp04cSIWLFgQ99xzT7NHGbU9e/ZEd3d37Nu3L3bt2hW/+MUv4sorr4wTJ040e7SaTZs2LTZt2hQHDhyI/fv3x0c+8pG4+uqr4/vf/36zRxuV3t7euPfee2P+/PnNHmVU5s6dG6+88srQ8sQTTzR7pLr87Gc/iyVLlsRv/dZvxY4dO+I//uM/4h/+4R/inHPOafZoNevt7R32Pdm1a1dERFxzzTVNnqx2d955Z2zevDm+8IUvxH/+53/GnXfeGX/7t38bn//855s9WkSRzGWXXVZ0d3cPvR4YGCg6OzuLnp6eJk41ehFRbNu2rdljjJljx44VEVHs2bOn2aOMiXPOOaf40pe+1Owx6tbf31+85z3vKXbt2lV86EMfKtauXdvskeqycePGYsGCBc0eY0x85jOfKT7wgQ80e4yGWLt2bTF79uxicHCw2aPUbPny5cWaNWuGrfujP/qjYuXKlU2a6FdSXaGfPHkyDhw4EEuXLh1aN27cuFi6dGk89dRTTZyM/6uvry8iIiZNmtTkSUZnYGAgHnnkkThx4kQsXry42ePUrbu7O5YvXz7sv52z1QsvvBCdnZ1xwQUXxMqVK+PIkSPNHqku3/zmN2PhwoVxzTXXxJQpU+Liiy+O+++/v9ljjdrJkyfjoYceijVr1jTsN2420uWXXx67d++O559/PiIivve978UTTzwRy5Yta/JkTfhta43005/+NAYGBuK8884btv68886LH/zgB02aiv9rcHAw1q1bF0uWLIl58+Y1e5y6PPPMM7F48eL43//933jnO98Z27ZtiwsvvLDZY9XlkUceiYMHD0Zvb2+zRxm1RYsWxQMPPBDve9/74pVXXolbb701PvjBD8azzz4b7e3tzR6vJj/60Y9i8+bNsX79+virv/qr6O3tjZtuuilaW1tj1apVzR6vbtu3b4/XX389rr/++maPUpebb745KpVKzJkzJ1paWmJgYCBuv/32WLlyZbNHyxV0zg7d3d3x7LPPnrXvbUZEvO9974tDhw5FX19ffO1rX4tVq1bFnj17zrqoHz16NNauXRu7du2KCRMmNHucUfv1q6T58+fHokWLYsaMGfHoo4/GDTfc0MTJajc4OBgLFy6MO+64IyIiLr744nj22Wfji1/84lkd9C9/+cuxbNmy6OzsbPYodXn00Ufj4Ycfjq1bt8bcuXPj0KFDsW7duujs7Gz69yVV0N/97ndHS0tLvPbaa8PWv/baa3H++ec3aSp+3Y033hjf/va3Y+/evTFt2rRmj1O31tbW+N3f/d2IiLjkkkuit7c3/vEf/zHuvffeJk9WmwMHDsSxY8fi93//94fWDQwMxN69e+MLX/hCVKvVaGlpaeKEo/Oud70r3vve98bhw4ebPUrNpk6d+oZ/IL7//e+Pf/mXf2nSRKP30ksvxWOPPRZf//rXmz1K3f7yL/8ybr755viTP/mTiIi46KKL4qWXXoqenp6mBz3Ve+itra1xySWXxO7du4fWDQ4Oxu7du8/q9zczKIoibrzxxti2bVv827/9W8yaNavZI42pwcHBqFarzR6jZldccUU888wzcejQoaFl4cKFsXLlyjh06NBZHfOIiOPHj8cPf/jDmDp1arNHqdmSJUve8NHO559/PmbMmNGkiUZvy5YtMWXKlFi+fHmzR6nbz3/+8xg3bng6W1paYnBwsEkT/UqqK/SIiPXr18eqVati4cKFcdlll8Xdd98dJ06ciNWrVzd7tJodP3582JXFiy++GIcOHYpJkybF9OnTmzhZ7bq7u2Pr1q3xjW98I9rb2+PVV1+NiIhyuRwTJ05s8nS12bBhQyxbtiymT58e/f39sXXr1nj88cdj586dzR6tZu3t7W94juEd73hHnHvuuWfl8w2f/vSnY8WKFTFjxox4+eWXY+PGjdHS0hLXXXdds0er2ac+9am4/PLL44477og//uM/jqeffjruu+++uO+++5o9Wl0GBwdjy5YtsWrVqhg//uxNz4oVK+L222+P6dOnx9y5c+O73/1u3HXXXbFmzZpmj5bvY2tFURSf//zni+nTpxetra3FZZddVuzbt6/ZI9Xl3//934uIeMOyatWqZo9Wszc7j4gotmzZ0uzRarZmzZpixowZRWtrazF58uTiiiuuKP71X/+12WONmbP5Y2vXXnttMXXq1KK1tbX4nd/5neLaa68tDh8+3Oyx6vatb32rmDdvXtHW1lbMmTOnuO+++5o9Ut127txZRETx3HPPNXuUUalUKsXatWuL6dOnFxMmTCguuOCC4q//+q+LarXa7NEKvw8dABJI9R46ALxdCToAJCDoAJCAoANAAoIOAAkIOgAkIOgAkICgA0ACgg4ACQg6ACQg6ACQwP8Dih2/AZuiYg0AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 600x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 创建规则向量\n",
    "ruleVector = np.zeros(81)\n",
    "ruleVector[1] = -1\n",
    "ruleVector[40] = 1\n",
    "\n",
    "# 创建图形对象\n",
    "fig = figure(0, (6, 6))\n",
    "\n",
    "# 显示规则向量的图像表示\n",
    "imshow(ruleVector.reshape(9, 9), interpolation='none', cmap=rwb)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们的第一个像素规则是：如果蓝色点为1，红色点为0，则将其标记为手指。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Confusion Matrix:\n",
      "[[ 362  133]\n",
      " [ 345 7027]]\n",
      "Recall (TPR) = 0.731 (Portion of fingers that we \"caught\")\n",
      "Precision (PPV) = 0.512(Portion of predicted finger pixels that were actually finger pixels)\n",
      "Accuracy = 0.939\n"
     ]
    },
    {
     "data": {
      "image/png": "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bO+7lZKYZi5T2/wz22sHTU3yom1t4XA4Lu2L13p2ZHSiAAAAAEAdyC3OqbN1pyWmKyy7k2TRokW64IILzMIKm3PAAQfowQcf3G5+cFdUVOi9997Tb7/9pqVLl6qgoEA5OTmqqKhQgwYN1K5dO+2+++46+eST1a5dOyUnJ9eLfa+srNSrr76q9957TwcddJBuv/32GiXvrqio0DPPPKPPP/9cffv21dVXX73dFajYUmrVieLqwfOpRBC0KolPpQJX1nDXctaFF/RCqo9VUmpTWchnWdf5SElJcS7rOu+uCiiuD3frQ6u4uDjQsrWp3iS5M/kHrShlcbWptuetLqot1Uc1qRri+5TBt1qH61qscupppzrjH7z/gfmaujZz5u/OeNu2Oznjbdq0Mde1KLTYGQ8Zb4ewcZqs5V999RVz22+++aYzXl4+2b0Nz+oQsW5MfJ/o1WQbvtV54ln9wrfyxrbMt3qX7/Gv7feFZFeUq28aNGgQFbOql/l+Fvgu/+233zjj69c/4F6Pcf6sz8u6ZF0dnZcsccZ93691+eTdd91U59kyioqKNGHCBGcF0crKysiIhKp/m8rOzt4SzdxiysvL9cQTT2jChAkKhUJKSkqK7Hs4HFZFRYUqKyt12223qXfv3rr//vu17777bvWOlLKyMt1yyy1atWqVvvnmG51yyinae++9qy0TDodVVFSk6dOnq2vXrs4Ki+vXr9ddd92lvLw8/fjjjzrllFPUoUOHLbUb2xVGogAAAADAdqZVq1Z69dVXnR1ur7/+ur744gulpKTo8ssvV8+ePaOWad269ZZo5lbRqFEjvf/++2revLmSk5O1fv16LVq0SM8//7y+++47jRo1SlOnTtUXX3yhvffee6t2pIRCITVs2FCrVq1SZmamUlNTo5b5+uuvdcEFFyg3N1ezZ89W27Zto5ZJSEhQVlaW8vLylJWV5XywjWDoRAEAAACA7UyDBg10xhlnOP+Wn58f6US55JJL9Je//GULt27raty4sQ4//PBqnSP777+/jj/+eL322mu65pprtGLFCt1666365JNPnCPHt5Tk5GQNGzZM7777rk499VTtvvvuUcvk5uZqiTFqrUp2drY++OADffLJJzrvvPO2606yukYnCgAAAABgh5eamqoLLrhAgwcP1rhx4/T1119r2bJlateu3VZrUygU0l577aU999yzViNiQqGQevbsqf3333+rT1Ha1pFJBgAAAAAQJRwOq6ysTGVlZZFcUlX5Q8rKyiJThcLhsMrLyyPLxsp7U/XazS236bbKyspUXl4eyedSV1JSUnTOOedI2pAj8ZtvvjHbVllZWW2/q/KqBFG1b1Wvt/at6thWLbfx36uOzcqVKyOx3NzcSHs2PW9V69k0/5rvOdl4f2PtW03O28bHpepf0GO6pQTuRNk46ZCVfEjacAJc/yorK6P+hcPhqH+u7biWs5Z1bce1XEJCgvNf0H0Puj9bMnFWcnJy1D+f9gRdtrb7mJiYGPXPZ52u68t1joIuZ10PQa9jn+MZ9LrxsTWvOQAAAGy/VqxYoY4dOyo9PV2jR49WZWWlxowZo0MPPVSZmZm69957Iz96jz32WKWnp6t169Yxf0fcddddSk9PV3p6utasWWNuOzc3VzfeeKN69uypxo0bKz09Xe3atdPpp5+uiRMn1tk9bygU0jHHHBP5/3Xr1kUtU1xcrM8++0z9+/fXnnvuqezsbLVq1UoHHHCABg0apEWLFsVsX2Fhod5++20dddRR2nXXXdW0aVPtueee6t+/v0aNGlWtc6KiokJHH310ZP83dumllyo9PV1XX311JNatW7fI8U1PT9dXX30VafOBBx6o9PR09ezZs1r7br/9dqWnp6tBgwb68ccfYx6fcePGqVGjRkpPT9d//vOfqL9vfN6aNGmi9PR0tW3bVqeffrp+/PHHmNfG0qVLdc899+jAAw9UmzZt1Lp1a+2777666KKLNHv27HrzO4fpPADqFd8KGPGszuMbd2W7r/Lnn3+af6tvFi92z6E9++xD7RdNnOgMW5U0LNbyzz7jruwhScuWLXPGfarDSX5VVapYT1xiPYlxiTW32vdpSzyrD1n7sbWrz9UF6zhb58aKW8fMdZyta9Q6voWFhc54fdO0adOo2Obm5m/K97Nj2vRpznhOubucbF5enjO+LVzbubm5zrh1Dft+hlgVFn1Y27Q+b6zPrfr2tBkbPvuSkpJUWVmp4uJijRgxQgMGDNDatWslVT9nlZWVgUZiVHW6VP236+9ffvmlbrvtNk2dOlWNGjWKVAzMy8vTsGHD9M033+iOO+7Q1VdfXaNyv5tTtX+SlJmZWe1vy5cv1wUXXKBvv/1WZWVlatasmdq3b6+ysjJNmzZNP/30kz766CPddddd+tvf/hb1OZObm6uzzz5bo0ePVlJSklq1aqWWLVtq3bp1+uyzz5Sfn68jjzyy2musY9uiRQvttttuysvLU07Ohs+/1q1bV6ustHH7rfX069dPjz/+uIqLi/XKK6+oV69ezvdpOBzWq6++qsLCQjVs2FAnnXRStb9tet6q8q5s7ryFw2FNmTJF/fr10+LFi5WVlaXmzZuroqJCS5Ys0cyZM3XwwQerU6dOjrO15dGJAgAAAACI6euvv9Z7770XGXWy2267Oav6bM7mRhPMmjVLF1xwgVasWKGePXvqxRdfjIzAyMvL07XXXquPP/5Yd999t3r16qUDDzywRvsTq31PP/20pA0dfocddljkb2vWrFHfvn01depUZWdn64YbbtBll12m7OxslZeX6+eff9bAgQO1cOFCDRo0SBkZGTrnnHMiHRLhcFh33323vvzyS2VnZ+vuu+/Weeedp+TkZOXn52vatGlatmxZ4Jwld955p2655Ra9/vrruuaaayRJb775pvbff//IMq5yx5vq1q2bunfvrh9//FGjRo1SQUGBsrKyopYrKirSV199Fcmv0rlz58jfZs+eXe28vfDCC2rfvr2kDeftuuuu07Bhw3T33XerZ8+eOuiggyKvLS4u1iWXXKIFCxZo55131osvvqgePXqosrJSa9eu1YgRI6otv7XRiQIAAAAAiOm1115TSkqKxowZo3333TfyQ983SWms5UtLS3XDDTcoJydH++67rz777DM1btw48pqGDRvqrbfe0llnnaXhw4frjjvu0BdffBG30SjhcFi///67PvzwQ0nS3nvvrZ122knShtGEV111laZOnaqMjAw99thjOv/886tt+8gjj9Q333yjPn36aP78+br11lvVt29fNWnSRNKG0YuffPKJJOncc8/VoEGDIq9v2LBhZMRN0GOalpamtLQ0tWzZMhLr1KlTtZEoQaSkpOjGG2/UWWedpWXLlumnn35S7969o5b76aeflJOTo5SUFN18882RtpeWlurGG2+Med4GDx6ss88+W59++qluv/12ffXVV5HXL1u2TFOmTJEkPfroo+rTp0/ktU2aNNHll1/utT91rf6PYQQAAAAAbDXhcFj5+fm65JJLtN9++ykhISFmnszNrcsyZcoUffPNN0pLS9MLL7xQ7Yd4lYyMDF155ZVKSkrS5MmTNXfuXO82WHkJx44dq7POOktr165VWlqabrvttsiUt5kzZ+qzzz5TOBzWCSecENWBIm3o/OjQoYMGDRqkpKQkLVq0SK+//nrk7zk5OZEpellZWVFTfWp6TGuramRJZmamSktL9d5770VN+amsrNRHH32ksrIyNW7cWPvss0+krVOnTtXo0aOVlpam//73v5s9bz///LPmzJkT+dsPP/wQmfLasGHDqNdureNiCTwSxXWxu+a7WTvnmnPq6jF0xXzmfAZNNmPNYXa139V21+utebVnn3N2VGzI20M210RvqampUbHazsl2vd51jHzm5LuOnWuuuXUuXfsZ9Fqw1pmcnBxona5jZJ131+td845rOx97a9atBwAAwI6hVatWuvLKK2v9YzbW74Zhw4apsLBQ++yzjzp37mwu26NHD6Wmpio/P19LliypNq0kiGXLlumqq65S8+bNlZiYqFWrVmnatGmaOHGiioqK1LBhQ1144YXq169fpA0ffvih1q5dq5SUFF122WUxc/6cc845evzxxzV//nwNHz5cgwYNUkJCgtq0aaPOnTtr8uTJeuuttzRgwADttddedZLXxVfbtm116KGHavjw4fr000/14IMPVsunUlhYqM8//1zhcFinn356tXxYG5+3Ll26mOdtv/32U2pqqgoKCrRo0SJ16dJFknTcccepYcOGWrt2rf75z3+qa9euatasWb3qONkYv74AAAAAADG1aNHCmUjaV6yH3lWVYVJSUjR58mRzWkpRUVEkSeqIESP0f//3f14PJktLS/XSSy9FHi4nJiYqJSVFaWlpOvzww3XLLbfogAMOiDysDIfDWrhwoaQNnUn77LNPzPU3aNBA7dq10/z58zV37lytWbMmcuwGDRqkyy+/XMuWLdPhhx+uk08+WWeffbYOPfRQpaWlbdWOg1NPPVUjRozQ4sWL9d133+nYY4+N/G3SpEmaP3++0tLSdPXVV1fL8zJhwgRJfuftiy++UJ8+fZSQkKDs7GydccYZevXVV/Xdd9+pR48euuiii3TiiSdqn332qRedTBujEwUAAOB/rJt7a1SsT7nFeK378CMOd8bHjB4TuC3x9MsvU6Ji3bt3cy+8cmVctul7zKy4nXAx3xmty582ffse64wXFo51t8Vj9HesuE8VMd+qVr7XfH196owN/vKXvzhHb/uyznN+fr5+//13SdLkyZPVp0+fmOupuo4WL17sXfq2cePGeuedd1RcXKzKykplZmaqadOmatGihVq3bu18v1RNG2rQoMFmj0NKSooOOOAAjR07VqWlpZGKjlWjVKQNSWHnz5+v119/XW+88YZ233133X///TrllFO2SuWwUCikfv366f7779ecOXP03nvv6ZhjjlEoFFI4HNa7776r0tJS9ezZs1qp5YKCAs2aNUuS33nbuAx0UlKSnnjiCaWnp+uNN97QwoULdc899+jee+/VkUceqf/85z/q2rVrvfmMoBMFwDbBmoIXi29JUt9tx/rCXrNmjdc2zPKeMe4Jhg//1Bk/4YQTnfF33nFPIzzrrOgph5JiZ9x/5x37bx4+HjbMGV83c6b5mvx8948b39KY1vKxrg/fbfj+oJPskqC+16E1dTPWDYhvuWQAAHxZ3yklJSWR77q2bduqe/fugdZ38MEHe3c6NGrUSEceeaTXj/KqbVTlU4klHA5HytQnJCRUa19CQoIGDBigY445RkOGDNG7776rKVOmaPbs2Tr//PN155136sYbb9wqHQZZWVk65JBDNHfuXI0ePVpr1qxRkyZNVFBQoJEjRyoxMVFXXXVVtfQKxcXFkXuO2py39PR0Pfroo7rsssv0xhtv6MMPP9T8+fP15Zdf6tdff9WwYcO0//7714uOFDpRAAAAAAC1Utsft6mpqZEHCSeddJKeeuqpevGDuUpV5ZxVq1aptLQ05rJFRUUaP368pA2dAxvnFpE2HKvmzZvrmmuu0WWXXabx48frggsu0MKFC3X33Xfr+OOP1x577FE3OxJDYmKiBg4cqMGDB2v58uWaM2eOevXqpenTpysnJ0dpaWk69NBDq52X1NTUyIPL2p63xMRE/eUvf9G///1v/f3vf9e7776rG2+8UcuWLdNll12m7777LupYbg216kRxPS3zeermirkOeG3X6fMELej2XbGysjLnOqsyMG+O80m00fQffhgfFRs6NLp29nHH9Y2KWU/IV6xYERVbtWpVVMz1dNPnGAdNymutM+ib0qdH2rVO1/XtWqfPkNSg7xlrH2uTTBkAAACoC6FQSA0bNpS0IQHpvHnztPvuuzuXXbBggTOelZWlbt26aenSpfr+++9VWFhYL34wSxv2b99999Xbb7+tVatWafjw4TrvvPPMe/bly5dryZIlkjaMuMjKyjLXnZKSot69e+u1117Tcccdp5KSEk2fPn2rdKJIG0Yid+rUSTNmzNBTTz2lffbZR6+++qpKSkp04oknqkOHDtWWrzpvS5Ys0bhx4+J23ho3bqxLL71Uc+fO1SOPPKLZs2dr3bp19eKaoMQxAAAAAKDGEhISIvkzysvLNXnyZOeDvkWLFmnUqFHOdYRCIR177LEKhUKaPXu2vv/++3r1sPDUU09VkyZNVFlZqaeffjoyXWdT4XBY//nPf5STk6OEhIRqFX4soVBIu+22m1JTU1VZWWlOXbZs/KB2Zowp0UEkJCTo5JNPliSNHTtWubm5GjNmjFJSUnTjjTc6277xeRs3blzczltV55W0oXOuJtP76wLTeQAAADbDN79NPG4grZGOS5cu9VqPb86ladN+dca7dt3bGf/kk4+jYr/8crJz2RdffMEZH3jJJe7GeLJyYVUNww+6/LvvPuXewJlnRYWs4xsyju9TT7vX/dzC55xxa6SzbwJZa199RtT6JKGV7NxMtR1tjPonFArpkEMOUVZWlvLz83XfffepV69e2mWXXSKJSZcuXaoBAwZo/fr15nouvPBCPf/885oxY4YuuugiDR06VD179nReY+FwWBUVFeb1F2/t2rXTZZddpgcffFBTpkzR9ddfr0ceeaTaKJOqMs1vvPGGEhIS1KdPHx133HHV/r5+/XplZ2dXu97D4bB+++03lZSUKDk5We3bt/dqW58+fZScnKyysjK9/fbbkao3NREKhTRw4EC98MILWrJkif79739r3rx56tKli/bZZx/n+/SCCy7Qc889Fzlv7733ntd5q6ysVFFRkTIyMqqtv7KyUpMnT5YktW7dOkYy8C2LThQAAAAAQK106dJFRx11lD766CPNmDFDxx13nK655ho1aNBA06ZN04cffqilS5fqggsu0PPPP+9cR2Zmpp544gmdccYZWrp0qU488UQde+yxGjBggNq1a6fExEStXbtWK1as0Lhx49SrVy+ddtppW2T/EhMTdeedd2rixIkaM2aMXn/9dS1YsEDXXHON2rZtq7Vr1+rrr7/WE088oZKSEu2666566qmnqlXyyc3N1VFHHaWTTz5Zhx12mJo1a6aKigr9+uuv+sc//qHi4mJ17NhxsyWUN5WamqpddtlFc+bM0QcffKC2bduqd+/eKisr09FHH+1dIrh169bq3Lmzxo8fr1dffVXhcFinnXaaWbo4MzNTTz75pE4//XQtW7Ys5nn7/vvvtf/+++v000+PvP7rr7/WLbfcoiuvvFKdO3dW48aNtW7dOn322Wd68cUXlZCQoN69e6tBgwZe+1FX6EQBUK/Esxyi1QNvPRnzbVMs1lMW84mwYdiwj8y/WQ9eRoz43Bn/31TlKJ9//pkzvvvufpVoasIalllcXGy+pqpMYFC+5y9WBZ54XZ+x2mRdt75DWK02xXoytTVKKgIAtg+JiYl66KGHNH/+fE2dOlWzZ8/W1VdfLWnD997OO++swYMHq2fPnnrjjTec02FCoZD69Omj4cOH66abbtKkSZM0ZMgQDR06NPIdFQ6HVVlZqcrKSt1xxx069dRTt9goptTUVA0fPly33Xabnn/+eX355Zf6+uuvlZCQoHA4rPLycqWmpuqyyy7TzTffrHbt2lVr29y5czVnzhzdc889SkxMjLyuan/23ntvvfTSS2rWrJlXu9LS0nTXXXfp0ksvVX5+vu6//3498MADkjbck/p2oqSmpuqqq67S+PHjVVBQoNTUVJ1yyinmcQ6FQjriiCM0fPhw/f3vf9fEiRNjnrfbb79dp512WmSU0pgxYzR16lQNHDhQiYmJkXhFRYWSk5N17LHH6tlnn41Lie14oBMFAAAAAHYgrVu31v/93/8pIyMjZqLO5ORkHXDAAerQoUOgRKe77LKLvv/+e7300ksaO3asVq1apaZNm6pXr166+OKL1ahRIxUUFOjYY49Vbm6ulixZoqZNm1ZbRygU0oEHHqivvvpKX3/9tSZMmKB58+ZpxYoVysjIUJs2bdSuXTsdddRR6tatm1fRiX333VdpaWlq3bp1oNe4pKam6j//+Y+uuOIKDR06VL/++qtWrVql5s2bq2vXrjrzzDPVoUMHZ8fFfvvtp48++kjjxo3T77//rpycHGVkZGiXXXbRIYccohNPPDFqSksoFIrsZ6NGjZxtCoVCOuuss9SyZUt99tlnmjt3rpKSkrTLLrtEps0kJCSoR48eatCggTp27LjZ/TzxxBN19NFHq6SkRJ06dVLXrl1jLl913kaNGqWvv/5aP/74o+bOnbvZ8xYKhXTrrbdqr7320s8//6xZs2YpPz9fTZo0UadOnXTiiSeqR48eSklJ2Wybt5RQOOAjOlejXTFr3qZz444L3rXOzZWQ2phrd1xzsaw3m+tiD1qNxnrq57rgJv1vbtfmfDd2rDPueiLpqq5TUFAQFVu0aJFznZMmTYqK/fjjj1ExV6Ijn3m5ruPpU+kpaCWfoNVxpOBVb1yvt56Ku3pKXTHXubRGSriWdbWzqKjI+fptgTXX0Xp/xepZt97n1vG11lWTnAfWcMMVK1ear3EZ9lGskSjufnDfpw2+oysk6YQTT/TahuXDDz5wxn/91Z2TQZKeffZZZ3zdunXOuO9IlFg3Y77z+K1jGOtJirUu6/vVug6sz6Z4jkSJNWKovrMqJVjvH+vYWOfY5z7BOufWDWPz5s2d8Vm/z3K3ZSvkRDnppLrNifLr1KnOuFUR8cknn3TGXfdOkiJPzzd1Vl3mRHnOnRNlzpw5zrh1TVrXk29OFNfy1ven9Znmcz8j2fvkup/dVvxj/F/rbN0t0nfSZXvfrZTEtBq9vupzanOdEEGXs17neq3vOmOty1dN9yfe6/PdJ5/txFo2XusJoibnLZ7nuq4wEgUAAAAA6sA9B7xah2sPKSFU82mYQX+g1vSHbKzX+a4znj+m4/3DvC6OT22Xj9exr+2xqsnr62vHycboRAEAAPgfa7SR9eTcZySXNRLAdzSYNQLIN+fS9OnTjPa4t/vLLz87461bR482GD78U+eye+/tHkXjyxql09BI/nTGGWc443l5ec54y5YtnXGfY2wte9qp3zjjK42Rita+WqPTYuUscLFGf/iMprLeH9bILmv5beHHk6/EBH5uAdsbMsgBAAAAAAAEQNcogHrFejrl+wQ31rp8nzT75kqR/HI5xXJKv37m30Z9+aUz7pOjQbLnssfKiRIv1hPWtDR7fndNzodLTargWNehtS7rOoi1Dd+8JL55EWIdp5rkHgIAANiR1KoTxafcoutmznXj5xqa6DsUcFOupFY+ybVc7XRt2/ohUpuSkdbNbkZGRlRst912i4q5jvuuu+7qXOedd90VFfvruedGxb777ruomDUE1XU8gyZHtc6R6/Wua8Tn+gx6LQa9Pnz4rNNneDgAAAAAIL6YzgMAAAAAABAAnSgAAAAAAAABMA8AAADgf6y8ML5TN31z9Piso6SkpNbrlux9taYnWzmMXBo0aOCMxyu/jjWVNT093Rnv3LmzM15QUOCMZ2Zm1qxhG3nu2Wed8VlG3Kq6ZPGtwuPLZ1q0r7puOwDUJUaiAAAAAAAABBB4JIpPrfigr3cJmjRUCt5b7WpnPJ4Qbcpqp8+Tm00d1ru3Mz592rSoWIsWLaJirgoXPlVD3hw8OCp24AEHRMXWr1/vfL0rOauL67xbx811Pl3Xgs/1GfT1PglwXesMet1Z13Ztk9huy6xjV5P3snUcrXXV5InZljhXvvsRz8+9kSNGOOPH9u0bl/VnZWWZf3Ml0ZakGTNmOONFRUXOeDyPh7WumlwH1tNf63rzXT7Wfser8hEAAMD2asf9RQYAAAAAAOCBThQAAAAAAIAA6EQBAAAAAAAIgOo8AAAA/xOv3Eg+ueR8c+pYuc3OHTDAGR/81lvO+N777OOM/zFvnjNuVe1x5eWx8oVZx2DRwoXOeLv27Z1xK3+PFbeq9ljxeOS1+u2335zxnJwcZ9w3j5F1jOOVw8h1XuPxPqjJegCgPqlVJ4pP4k4X1welK+ZTYs31YV3bD2TXfvp8uTZs2LBW23dxfelnZGRExVzJWa3z9vvMmVGxLn/5S1TshwkTomJd99rLuU7XjYJr+64EtNYxdsWDJpu1riXXdeO6EfNJUuyKl5eX13jbkrv9QZP3AgAAYMsq+Xh4na07lJ2t5MMOVsjoUNuaiouL9dBDD2nZsmXafffddd11123tJgFxU//ecQAAAACwHSi4+vo6W3dip92V3Os9KUYnSllZmaZOnari4uJA69x5553Vtm3bWretrKxM7777rn777Tf93//9n6699tp6O9KosrJSOTk5ys/PV0lJiYqLiyPHKz09XVlZWWrcuLGaN29er/YhHA7rjz/+0MqVK9WpUyc1adKkxusqKCjQzJkzlZaWpr/85S/mA11sQCcKgHrFGoFkjaCKNSrM+ps1BNo1Ukiq2Wi21NRU79f48h0ObcWtY2sdD8keLTXi88+d8cLCQmc8yRgdFutGoFevXs748uXLveLWKK5Y15TvdViTmxDrRtdVsl6yp3b4XueSPV0j6M03AGATW7lE/Pr163XWWWdpnjFNb2OhUEgPPvigbrrppi3QsvpjxYoVOvroo7V48WKVlZVF/kkbRvWnpaUpKytLffr00YABA9SnT5960cmwZMkS9enTR4sXL9YRRxyhTz75xHmvUFlZqbKyMqWkpJj3gvfff78efvhhpaSk6IUXXtBZZ51VrzqM6hs6UQAAAABgO5eWlqZOnTrFXKZ58+ZbqDX1R0VFhVauXKm8vDy1bNlShxxyiFq1aiVJWrVqlaZOnao5c+bozTff1Lvvvqu77rpLf//737d6R8ratWu1dOlSVVZWat68eSooKKjWiRIOh/Xbb7/pqaee0oQJE/Tzzz872xwOhzV16lSVlpZGRi6dddZZW3JXtjl0ogAAAADAdu7YY4/VBx98EHOZHX30wYABA/TQQw9VOw7l5eX65ptvNGjQIM2cOVP33XefdtttN5122mlb9XjtsssuOuecc/TTTz/puuuuU6NGjar9PRwO68knn9RLL73kzJNZJRQK6cYbb9TSpUu1yy676IILLtjhr4PNoRMFAADscHwrmFjTv6wnkfGo7uI7Bc+qwuPL2iefY2a10Urwbu3rgj//dMbLjWlsVtut9VvnKR4Vbtq1a+eMn3HGGc54fn6+M7548WJn3Kr+s3btWmfcp1CDxXe6qDV90Lo++OFWt9LS0uLy2bQ9S01NjTpGycnJOuqoo3T//ffr3HPPVUFBgV588UWddtppW6mVG2RkZOill15SUVGRsrKynO+fysrKQJ9nvXv31nfffafk5OSYHS7YYKt2ogStqOLD9fraDrUKWj3FantmZmattu9izVuvDdeH6tuOG7KJEydGxbosWeJcp6tiUEFBQaCYT/lC15f0ypUro2LWh4jrxiJopSefkpWu17uWs77ggr4eAAAAQPz07dtXPXv21JgxYzRx4kQtW7ZMbdq02aptSkpKUnZ2tvn3oL+tQ6FQnfxm3V4xEgUAAAAAUE04HFZ+fr4mTJig2bNnKycnR+Xl5WrdurU6duyogw8+WA0aNKjxQ/DKykrNnTtXkydPjoy4atmypfbaay9169bNfKBaVlamKVOm6Oeff9aSJUtUXl6uDh06qEePHurevXudjbZJSUnRSSedpDFjxqi8vFy5ublRnSjhcFirVq3S+PHjtXDhQi1btkzNmzdX+/btdeCBB6p169Yxj1c4HFZlZaW+//57zZkzR0uWLFHjxo3VokULHXjggWrXrl3k9fn5+Xr22WeVl5ennj176pRTToms47777tOaNWs0cuRISRuS0F9//fWRjpKMjAxde+21ysrKkiSNHTs2suwtt9yiBg0aqLKyUo899phWr16trKws3XzzzTEHJ/z6668aOnSoQqGQzj//fO22227V/m6dt/3220/du3ePOQoyHA5r4sSJmjlzppYsWaLs7Gy1aNFCPXv21K677rrFR7HRiQKgXrFGWVlD6WONxLE+UH2rslijjazqJ5trV7xYQ7Ot/fOtwmMtL/lPM7AqyFjriTXs3Ep6d+ihhzrjf/zxhzM+d+5cZzw3N9fcttUu64vf2u9YNyG+0wt8j2Gsm8uaVCwCAGx/iouLddNNN2nIkCHKy8uL+n5PSEhQly5d9P7776tLly7e68/Pz9dFF12kTz/9VKWlpZHvuFAopMTERD344INRZZHD4bCWL1+uSy65RF9++WXkOyscDkded/XVV+uOO+5Q48aNa7H3bqFQSE2bNo38/6bfjUVFRbr11lv15ptvKi8vr9r3digUUsOGDXXeeefpX//6lznq4/fff9d5552nX375JdJ5UPX6xo0ba8SIEdp///0lbah8+Mwzz2jhwoW65JJLqnWiPPbYY1qzZk1kvVX5Uao0adJEF198caQTZcKECfr3v/8tSbryyivVoEEDSdLMmTP18ssvKzExUYcffrgOPPBAZ7vLysp06623asSIEWratKkuv/zyatvOycnRJZdcoi+++MJ53q688krdddddzvO2YMECDRgwQBMnTqw2PSkUCik7O1sffPCB+vTp42xXXaETBQAAAAAQEQqFNGvWLKWnp+vUU0/VoYceqgYNGmjt2rUaP3683n77bc2YMUP9+/fXt99+61XVp7y8XNdcc40++OADZWRkaMCAATrmmGNUUlKi33//XV999ZX233//qIcE06dP15lnnqlZs2apXbt2uvbaa9WhQweVlZXpu+++02uvvaYnn3xSf/zxhz744IO4V88pLy/XJ598ImlD7pRmzZpF/pafn6/zzjtPn3zyiZKTk3XkkUfqhBNOUIcOHbRgwQINHTpUP/zwg5555hktXrxYr776atQ0nNzcXPXv31+zZs1S27ZtddFFF2nffffVsmXLNH36dE2ZMkUdO3bcbDtDoZDeeustFRQU6Omnn9a3336rxMREvfLKK5HksykpKZvtaEpISNAVV1yh9957T+vXr9c333yjAw44wPnwZt26dfr5558VDofVt29ftW7dOvK33377LXLedtppJ1177bXaeeedq523p59+WvPnz9cHH3xQ7SHl+vXrdeaZZ2rSpElq2bKlLrjgAh1wwAFasWKFfvvtN02cOFF77LHHZo9JvNGJAgAAAADbuSBJRqt+IKempuqBBx5Qu3bt1KxZs2o/nAcMGKADDzxQAwcO1KxZs/TGG2/o+uuvDzylYt26dfrwww9VWVmpyy+/XA888EC1UR233357VAdIWVmZbr/9dv3+++/q0qWLPvroI3Xq1CmyzdNPP109e/bUpZdeqs8++0xffPGFjjvuuEDtCWrBggX65ptvJEldu3aNdBxVVFTo8ssv17Bhw5SamqqrrrpK999/f7XR1RdffLEuvfRSDR48WMOGDdOuu+6qBx98sNoxmzRpkubOnavU1FS98sor6tOnT7W/5+XlRUaIxBIKhdS3b19VVlZq5MiR+vbbb5WUlKQBAwZ4dyx17dpVXbt21ffff6/XXntNl19+eVQVIEn66KOPlJOTo9TUVF1xxRWRdledt5kzZ6pz584aNmxY1Hnr1auXLrnkEn3++ecaOXKkTjjhhMh6Z8yYoSlTpigxMVFPP/20+vfvX+2YrFu3bqvkcgncieIayuszXD1oQkzXcrWd4+Qacm8Nc3YNRa9tO98dOnRzTfTmOh+utruGklvnzfX6devWRcXS09OjYvvss49zne+9/35U7Jyzz46KrV69OipmDYN3JU8qKiqKirnabiksLIyKua4R1wePdS254q6pKq7lrGvJtX2G2QOAP+u70PpMtaa9xSMRuG/Fk7rmO7Ux1tS/2q7D93xYfM5TrPX/OnVqVGzVqlXOZdsYSfd32WUXZ9yVZF+S5syZ44zn5OQ449b9j895kvyuP58k+7GQLL9ujRgxQr179zb/3rZtW7355puR+83u3bs7r4OEhASde+65+u9//6vx48frgw8+0DXXXBOo8EU4HNaIESMiVaT+9re/Rb0/N/2tEQ6HNX78eH399ddKT0/X66+/Xu2HuLThej333HP1wQcf6JNPPtFjjz2mPn36KDU1dbNtCtLmpUuX6pJLLtGqVauUmpqqSy+9NPK3qVOn6tNPP5UknX322brvvvuijkV6erqeffZZzZs3Tz/88INef/11DRo0SDvttJOkDb8H3nrrLZWXl6tZs2bq3bt31LF3dV5sTm2/R5KTk3Xaaafp+++/14IFC/Tnn3+qW7du1ZYJh8MaPny4wuGw/vKXv6hr166R+IQJE/T1118rLS1Nb7zxhvO8DRgwQB9++KGGDRumJ554QkceeaTS0tJUWVmpwYMHq7S0VOnp6erbt2/U/gTpVKoL/PoCAAAAgO1cVZJY69+UKVOi8nhYQqFQ5Mfy3LlzA3dshkIh7bnnnpGOk7fffnuznWfhcFhPPPGECgsL1b17d+23337mA+2jjz460rHheki6Ob/88otmzZqlRYsWaeHChZo2bZqGDBmiQw89VGPGjFFSUpKOO+449evXT6FQSOFwWA899JDWrl2rpKQkXXvttWbHTWZmpq644golJSVp9erVmjx5cuRvCQkJ2nvvvRUKhbR27VpNnTq13nQqnn766crMzFRJSYmeeOKJqHYtX75c48ePV0JCgv76179GqrOGw2E9/vjjKigoqNF5C4VC6tatm0KhkMrKyvT999/Xm2PCdB4AAAAA2M7ttddeeuaZZ8y/Jycnx6yIU1xcrNLSUpWVlam0tFR5eXmSNowo9/lx26lTJ+2777766aef9PDDD2vRokW644471KZNG2cHREVFhX788UdJG0a/FxcXO9sZDod10EEHSdowQmzp0qXeCWZHjRqlHj16KCEhQeFwWBUVFSotLVVFRYU6dOig66+/XhdddJHS0tIkbRiF9dtvv0mSOnfurD333NNcdygU0sEHH6zU1FTl5+frzTff1PHHH6+kpCSFQiGdcMIJ+te//qW1a9eqX79+uuqqq3TxxRerUaNGcc/v4qNFixY66KCDNGrUKI0ZM0alpaWR81Q12iQvL08ZGRk6/fTTIx0lPuetKmHtqlWrtGTJEjVp0kShUEhHHXWUWrZsqZycHJ133nn629/+pkGDBqlx48YxCzzUNTpRANQrvkOuY4lX1ZKaVOfxHTZdE9ZTH6vCirW8b+UcyR5ybcV9q77EeqJlDWe1phW6pgBK9nUQa7+rhh8HVZMKOb7Xuu91Huu6rUl7AQDbhj333NOsZOcSDodVUFCgESNG6Pnnn9fy5cuVm5urtWvXVptK73vPk56erqeeekrnnHOOFi5cqFdffVUffvih9t57b912223q06dPtekwK1as0LJlyyRJn3/+uaY6ptVVqfqeDofD+vbbb7XHHnt4fa82bdpUHTt21OrVq5WQkKBWrVpp99131z777KMzzzxTTZo0qfadGA6HtWDBAkkbpuptbltt27ZVw4YNlZ+frxUrVlQ7dp07d9btt9+uBx54QEuWLNFtt92mJ598Uocffrhuvvlm7bXXXt73CPEYuZGUlKQrrrhCY8eO1fLlyzV58mQdfPDBkjac+5dfflllZWU66KCD1LZt28jrVq5cqaVLl0racN5+/fVXcxsbn7dvvvkmsq/t2rXTfffdp9tuu005OTm6//779dJLL+nggw/WbbfdVqclrWOhEwUAAAAAEFFZWalhw4bphhtu0KJFi5SamhoZQdK/f38lJSXp2Wef1cSJE73XHQqF1KtXL/3www968sknNXjwYC1evFjjxo3TKaecouOPP15vvPFGJGHovHnzIq/9888/9eeffwbaTtVoER8XXHCBHnjgAbPdLlX5jILkhElMTIwst+kDo1AopBtuuEHHHXecbr/9dn377bdatmyZ3n77bX388cf617/+pSuvvNJrVEo8cmuFQiEdcMABatSokVasWKEvvvhCBx10kEKhkNasWaPvv/9eKSkpGjRoULXXbXzeFixYEOls2pyNc+KEQiFddNFF6t27t+6880599dVXWrFihT766CONHDlSN998s2677bYtPiol8NZ8EqS5uJYN+vra9qC5nmj6PEV1xYImDZXciVTfHjLEuWxtuJ4mp6SkBFpO2lBCalNBk8i6lpOk/z7/fFTs7csucy67qdNOPdUZf/+DDwK9/twBA6JiVk95fn5+VGz+/PlRMdeHtnU8reFqm3L1nlofeK72b63EgwAAANj+VCUKHThwoNauXavDDjtMTz31lDp27KikpKTIPe7ChQtr1Ikibbh/bdmype69917dfvvt+vDDD/X0009r8uTJGjZsmG666SY99dRTSkxMrHZPPXjwYJ1wwgmB7n/T09O975MTExO9X9OwYUPl5uY6C2Vsav369ZHkz40bN476HRAKhbTHHnvovffe07p16/Too4/qzTff1MKFC3XrrbeqRYsWOvPMM7f4/X/Lli117LHH6vXXX9d7772nm2++WZmZmZEkwTvvvLMOO+ywau3a+Ly98cYbOumkk2p03kKhkHbbbTe98cYbkbLNr732mubNm6f7779fzZs312WXXbZFjwkjUQAAAP7Hugnzrazj6mC3nh5a8fpWtcd6EOHaV+upoLWO4uJiZ9x3mLZPBcJYy5eUlDjjrqmJ1jQ4KxeDdWyysrKc8aokjZuaMWOGM77EqApkVf+xjoErN4XvtFDr/FkPHn2rLqFulJeX65577tGaNWu09957a8iQIWrZsmW1ZeKV4DMhIUEZGRk699xz1b9/fx1zzDEaN26cPvroI913331q0qSJOnfurKSkJJWVlennn3/WOeecU28eIiYkJGi33XbTxIkTNXXqVOXn58esGDNnzhwVFRUpFArpwAMPND//k5KS1KRJE913330aMGCADjvsMK1atUrPPPOMzjzzzMDti9d5CoVCuuKKKzRkyBDNnTtXM2bM0H777af33ntPknT88cerSZMm1V7TuXNnJScnq7S0VL/88ovOPffcWp23pKQkNWzYULfffrv++te/qlevXlq+fLmeffZZXXLJJVs0bwyTnAEAAAAAkjZMvZgzZ47C4bAuueQStWjRwrmcVd67pqoSk0ob8qBUdVo2atRI3bt3lyR9/fXXZp61rSEhIUF9+/ZVYmKi1q1bFyn161JRUaH//ve/KikpMUv2uuy+++7q2bOnpA2VkGoiHA7X+rjttdde2nPPPVVeXq7XXntNy5cv108//aSkpCRdcMEFUfvSsGHDyHkbPXp0XM9b27ZtI+W6//jjj7itNyg6UQAAAAAAkjaMuKrqCKjqTNnUmjVr9Omnn9Z4G1YKhapRY1lZWZGRBYmJibruuuuUkpKiadOm6bHHHjNHgG1poVBIF198sZo1a6bKykrdcccdzmMWDoc1efJkDR06VOFwWAcccEBUioRYo0aq/ta0aVOvth166KEKhUKqqKjQtGnTPPYsWnp6uk477TQlJCTo22+/1VdffaWVK1dqjz32ULdu3aKWT0xM1PXXX6/U1FRNmzZNjz76qPd5C4fDmx1huOkImC2B6TwA6hVryLX1oesabry511jD/azlfSvRSFtmSHJhYaEzbh3DjTPpB1k+1rBI3+Gh1tB4a9uxnla4cj1Jdnt33313Z/yJJ590xvv362duu6qM4aYWL17sjPtODYn1Nytu7bd1bGNVUYj19AwAsGNo37692rRpo9mzZ+vNN99Uz549dcoppygxMVHl5eVavHixzj//fOXk5NRo/QsWLNCQIUN0ySWXKD09XYmJiaqoqNCMGTP01FNPKRQKqWvXrpHEsqFQSCeddJIOOeQQjRkzRnfddZdmzJih66+/XrvttpuSk5MjHTClpaWaPn26unTp4tXhUBs77bSTnnvuOZ199tn6888/deqpp+q5555T9+7dI9OQJk6cqL/+9a9at26d2rVrp//85z/VpvaFw2F9/vnnCofDOuyww5SSkqKEhASVlZXpnXfe0dixY5WYmKijjz46cLtCoZC6d++utLQ0FRcX65577tFzzz0XKR9sTRWMtb6TTz5Z9957r+bMmaPbb79dlZWVuvDCC80cjyeeeKIOOeQQjR49WnfffbdmzpwZ87x17txZzZo1ixyTb7/9Vjk5Oerbt2/kmJSXl+uzzz7TF198oYSEBPXp02eLT++KeyeKT0JMF9cNXG0Piuvmz+fGNuj2rTmudVF2yfWDxPWjw5WV2vox4/pB5prP26FDh6iY9UN20/mTkvT+/+bObey0/w3dq7ZcwASylsFvvVWr159w/PFRseXLl0fFrHncW+rNTOlRAAAAxEtGRoZuvvlm3XDDDcrNzdXFF1+sxx9/XFlZWcrLy9PcuXPVokULXXfddXryySe1fv36wJ3t4XBYzzzzjB5++GE9/vjjat++vRo0aKD169drzpw5ysvLU9OmTXX//fdX+x2TkZGht956S+ecc46+//57vfnmm/r444/VoUMHNW/eXJWVlVq3bp2WLVumNWvWaMyYMVusE6Wqc+GFF17QNddco99++019+/bVrrvuqiZNmignJ0fz5s1TRUWFOnfurKefflr77rtvtXWUlZXpvvvu0+TJk9WuXTu1adNGqampWr16tX7//XeVl5erR48euummm7x+Y7Rv316dOnXSr7/+qhEjRuiAAw5Qs2bNtPPOO2vYsGHev1c6d+6sfffdV+PHj9fixYvVokUL9evXz1xPenp65LyNGzcu5nnLzc3V6NGjI50olZWV+uc//6mxY8eqbdu22mmnnZSWlqbc3FzNnj1bxcXF2mOPPXTXXXdt8d9DjEQBAAAAAEja0ClwwQUXaLfddtPtt9+uWbNmadKkSUpLS1OHDh105ZVX6qqrrlI4HNZLL72k9evXa8yYMTrppJMCrf+4447TlClTNG/ePP36668qKSlRdna22rRpo7POOkvXXHONOnfuHPXDvFWrVho5cqQ++eQTvfDCC5o3b57mzZunadOmKSsrS40aNdJOO+2kiy66SDvvvHMdHBlbQkKC/vrXv6pbt2567rnnNHr0aM2bN0+//fabWrRooW7duumKK67QaaedpoyMjKh9S0xM1HnnnafKykotXbpU48ePVygUUqNGjbTXXnvpzDPP1MUXX2wmrLY0atRIH3zwga688kpNnTpVq1atUlFRkfOheBCJiYm67LLLNGHCBFVWVurQQw/VTjvtFPM1LVu21IgRI/Tpp5/qv//9b8zztssuu0ReFwqF9Ne//lUlJSVavHixfvzxR1VWVqpRo0bq1KmT+vfvr0svvVTNmzev0b7URigccEy2a0SDT7nVoCNRXL1Ite1Z8hldEnRZ1/BpK6v6kUceGRWr7SiJeY6kQq7j5DMSxVW7e+3atVExn5EoeXl5UTHXsHfXSJStzTUS5ccff4yKufZRskcmBVHbWueuctXbiuzsbGfcum5rMp3H4lu9wZpWItmVB3LXrPFqUywfvP++M14fp/NYI7as4xRrOo/1Gut8W9u+6uqrnfF4TufxKYFexdoP63PB+j6zjmGsp06+57U+JffzZX3WWHw/g1xT+qz7Gd+4dS1Yw7yHvPOOM+5r7pw5zrjrPWZd49Y+WZ9PFt+pcj6VhSS/a9v3vWYdG+uzzXLgQQc543/p0sUZnz9/vjNuHTPXdeY77dU639b3p3U+fK+P+iS3nXtKaTwkdu6kBh+/p1CmPS2jsrJSa9euVUVFhVJTU70++8LhsEpKSlRcXKzy8nIlJCQoJSVFGRkZSkhIUGVlpfLy8lRZWans7Oxqn4fhcFh5eXmqqKhQcnKyGjZsWO1vZWVlKikpUWlpqcLhsBITE5WcnBxZ9+baVfX6srIyVVZWRkohJycnKy0tzWuExcb7kZGR4T3NZVMVFRUqKiqK7FtSUpJSU1OVmpq62e/g4uJilZWVRd4LVa917dPG7U5LSzN/i0ob3ltFRUWR85iamlptP4uKiiIVvJo0aRLzHFRUVGjN/+5nfY5XTc5b1TVYWloaydWTlJSklJSUGpWwjhdGogAAAABAHch6+bk6W3coK0tKtR/oSBs6snxHL0TWHwopLS3N+VC2at1WUs9QKGRuNxQKKSUlJebDqM21qzav31Ss/aiJxMTEmB0allAopPT0dKWnpwda3qfdmztePttNTEyMTLnxUZPztrlrcGuhEwUAAAAA6kDK0dEj0gFs2+hEAVCvWEOFa1LlxBqKaG3DGu5dk6GCW6KaibUNqzKQNR3Bt+qLZB8r65hb27bisY659QTDilvDTF984QVn/MNLLjG3fcrJJzvj1hD0JUuWOOO+02Yk/+tzaw1xBQAA2J4F7kRx3bzV5CZwY1YppKDbcb0+aDut+cSuea2uG3PXtqvKcG2qtvlPXFwlxVw/qFw/HqwfGq7Xu5IytW7dOipmDbFyDeOr7XWzpQz/7LOoWOdOnaJiVv4R134G3Xefa57qPAAAAACwZfDrCwAAAAAAIACm8wAAgB2ONV3Nmg4Xa3qbi2vEqzXK0IpbbbGsXLnSa3nLlF9+ccbTjSmErpGs1vQzazSsNf3MtxqMtbxV3WXdunVe7XElXvTdJ6uik5XU0Rrt+9WoUc54h4cfdsZdVRhjcY3O9q0YZfGtogQA9QkjUQAAAAAAAAKgEwUAAAAAACCAwGPvXMPuapv5P+jrraF9rqG1QRPTWrW7W7VqFRVr1KhRVMyVsPXzESOc66yNiT/+6Iy7TpxrqKor6am1767hqNnZ2YGWs4ZxuoasurY//NNPo2Lz5893rvPqa65xxreEBg0aRMWsfQ86DNt1fftU4dhWEvUCAAAAwLaOnCgA6hXfEsexSgknJyc746553pLdeWV1lMXqCLbWdc7ZZzvjbw8ZYq7Ll2+JY2uOe6yOQOtv1rGytm2VBrZyAEh+1askO/+AVVFtyNtvm9seds45zvgxRx/tjC9btswZjzXv37c0t2+J41gdr5RLBgAAiI3pPAAAAAAAAAEwEgUAAOxwfKu+WHxG6VjbtEYfWXFrm9aIL1/WSClr5JhPRZWCggJn3BrdZo0ctPhML5akhg0bOuPWPrnWY1XnsdpijbSzqvP4jgSz2h6Pa9u3kpR1DVOdB8C2jJEoAAAAAAAAAQQeieLqjXbFatuDXNt1Bm2nK1msJE2ZOjXwtraEnr16OeNzZs+OihUXF0fFFi1aFBWznlS1b98+KuZK3ut62mA9UXA9tXI9mXElsG3btq1znSM+/zwqVlhYGBU79bTTomIv/Pe/znWuWbMmKnbzLbdExVxPrKwnUK6nZ65r0fVk0npy4zofsXKCAAAAAADih+k8AAAAAIC4KioqiiRYb926tTllDdjW0IkCYJvgmxtA8q9m4hrpI9VsfrlVGcjaRk34zkG32uQqjy7FPrbWtuNVctvKmyDZVXWsmzMrL4F1XmPlYLjv3nud8RazZjnj1qjHdevWmduwjq11/qzla1Kdh5LpALD9CYfDXiP7ExIS4lKV7ccff9RRRx2l8vJyffXVV+rTp0+t11lXNj1GQY9BZWWlwuGwQqGQef+1o9iRjsX2vXcAAAAAsAP77LPPlJWVpczMzM3+22mnnbRw4cKt3eQtrqioKHIM2rdvr/nz5wd63XXXXafMzExdcsklddzC+q2srEyXXnqpmjVrpnPPPdc7Kfi2hpEoAABgh+ObT8p3ZI9PjjdrhJq1TesJX7xuWq12WqOeXMtbx8WVvy3Wuq3zZI0ws/KUWdV5rBFs1rF0HXtrlJhvW6zzao0WXL58uTO+fv16ZzweI818rvdYdqgqPOsG1926ExtJGcdIIfc1WKWiokKlpaWqrKxUamqqec1KG95b8RiFsi2qyhu5fPly3X333Xr55ZdjHitpw2dFSUnJdt1pUFlZqYULF2rkyJE644wz1KRJk6hlCgsLNWTIEBUUFGj48OGaP3++OnXqtBVau2XUqhPF9QVmXUCuD13XB6jrC8T6onRp3LhxVOyII46Iir05uA4/0LYA1w2X6xi7blas4eWuD4mgiVB9bi5d59g1PN9qp2tbubm5UbFhH30UFUt2JJCV3O287tpro2ItcnKiYtZNkusmxnXefKZ3+NyoAgAAYCtbfWPdrTu5s5R++GY7UTb2z3/+U8cff7z598TERLVq1SoerdsmhUIhhcNhvf/++/rb3/6mww47bIftVKoycuRInXzyyaqoqNAxxxzj7ERJTk7WzjvvrBkzZqhFixZm+fjtBSNRAAAAAKBO1K+HXYcffrj23HPPrd2MeisjI0NNmjTRkiVLdNlll2ncuHFq2rTp1m7WVlVaWmqOFqySnp6uMWPGaNKkSTrkkEOclVe3J+REAQAAAADs8NLS0jRw4EClp6dr7ty5eu6553as6Wc1FAqF1Lx5cx133HFq0KDBdj96h5EoAOqVeOQdqOJbnceaj15aWurVJsmeIx/PqYTW9ElripgVt45TrJsGn9wINVE1L9nFJ1eBZO+3tZ5Y85qtdVl5FawnMYWFheY2fKsu+d6oxMqYz/RAAMCmwuGwiouLVVhYGMmtkpiYqLS0NGVlZXmlXnCtu7CwUEVFRSotLVVycrJSUlKUlZUVc8p7ZWWl8vPzVVRUpPLycoVCIWVkZCg7O7vWlRDPOeccLViwQC+//LIefvhhHXrooerdu3et1hkOh1VQUKDCwsLIfUZGRoaysrI2m3elSmFhYeQcJCcnKzU1VdnZ2QqFQioqKlJubq4SEhLUsmVL53d9aWmpCgoKVFJSooqKCiUkJCg1NVVZWVnO9AR5eXkqKCjQTz/9FIlNmTKl2rJNmzZVWlqawuGwVq5cqbKyMiUlJalFixaR+5M1a9aosLBQoVBILVu2jHl+KioqlJOTo3A4rIyMDGeqjrKyMuXn56u4uFiVlZVKSkpSVlaWMjIyNntPVPXa0tJShcNhJScnKyMjQ2lpaV73U3SiAACAHU68SqD7JKj17fCy1m11hMXqfPTRY//9nfHJkyY54652Wh2q1j5ZyVCtJKxWPrKMjAyvuNVxaB1LV6e6tQ4rbnWiWh24S5cudcZHjx7tjP/555/OuHX9WefKp1PV90e0b2l2bB3hcFgLFizQyJEj9dprr2nBggXKy8tTcXGxMjMz1bJlSx144IF64okn1KRJE+/zV1xcrHfeeUePP/64li9frjVr1ig7O1uNGzfW4Ycfrrvuuks77bRTVJuKior0wAMP6IMPPtDixYu1fv16JSYmqn379jrqqKP04IMP1ng0RDgcVlpamm655RaNHDlSS5cu1b333qtevXopLS3Ne33Shvf2U089pTfffDNyDEOhkNq2bauePXvq6aefrtbpsKny8nJ9/PHHevTRRzV37lytXr1aDRs2VKtWrTRw4EANHDhQH3/8sQYMGKDdd99dkyZNqpaTJDc3V6NGjdLLL7+sWbNmafXq1SooKFBaWpqaN2+uLl266Mknn1Tnzp2rteEf//iHnnnmmWpt6d+/f7X//+STT3TiiSeqpKREJ554oiZOnKguXbpoxowZkWVeeeUV3XjjjUpKStK7776rfv36Ofc1HA7riy++0CmnnKLy8nI99NBDuuGGG6r9fd68ebr22ms1ffp0LVu2TKWlpcrOzlbHjh115ZVX6qKLLnJ+R4bDYU2cOFGPPvqoJk6cqFWrVikcDqthw4bq0KGD7rzzTh1zzDGBrxk6UQAAAAAAUe644w69/fbbysrK0l/+8hf16NFDpaWlWrRokWbNmqX58+frt99+08iRI9WyZcvA6y0pKdFpp52mkSNHKikpSV26dNH++++vFStW6I8//tAXX3yhBx98sNprwuGwZsyYoXPPPVe//vqrGjRooO7duys7O1u5ubmaNm2aXnjhBY0aNUojR47U7rvv7r2/a9asUUlJiTp27KgLL7xQ999/v7777jt9+OGHOvvss707ZhYuXKgLL7xQ3377rdLS0tStWzc1atRIBQUFmjp1qj744AONGzdO77zzjnO0S2lpqa688kq9+uqrqqysVJs2bdS7d28lJiZq9uzZuummm/TRRx+pc+fOkjaMhN60E2Ho0KG66qqrlJycrE6dOqlr164Kh8NasmSJfv/9dy1evFhHHnmkPvnkE3Xv3j2yj3vttZdOOOEELV68WFOmTJEkde/evVrHVpBz3r9/f917771au3atXn/9dfXr189c9s0331RZWZlatGih0047LRKvrKzUU089pfvuu0+rV6/WrrvuqiOOOEKhUEgLFy7UtGnTdPnll2v06NF69dVXq3XAh8NhffLJJxowYICKiorUunVrHXjggaqoqNCiRYs0efJk5eTkbLmRKK5eHp+Nu3q4XTGfoent27ePim3LlXhyV692xisd1WhcT01cT0yspwVBnyK4nlhYT5ZcT1Vc14irOo+VxMm1T67trFu3LipmPVVxPRFxPeVq1qxZVMzqlQ76BCfW0Pog62T4PQAAAOrCtddeq5133lnnn3++2rVrp8TERIXDYZWWluqRRx7Rgw8+qClTpujee+/VU089Ffi34NixY/Xll18qKSlJt956q2644QalpaVFyjF/9dVXysrKqvaawsJCDRw4UL/++qt23XVXvffee9pjjz2UkJCgiooKTZs2Tf3799f8+fN166236q233jJHs1mq7qtDoVBkHfPnz9f111+vAw44QLvuumvgdZWXl+vyyy/Xt99+q2bNmmnw4ME67LDDlJCQoMrKSv35558644wz9Ouvv+q2227TiBEj1KBBg8jrKyoqdPPNN+v1119XQkKCzj77bP3nP/+J/B5ZvXq1nn76aT366KP69ddfzXacfvrpmjx5si699FJ17do18puvvLxcn332mQYOHKglS5Zo4MCBmjhxYuQ39sCBA3XxxRdryJAhOu+88yRJL774ovbZZ5/IuoNMnWrXrp2OOOIIDRs2TN9//72WLVumNm3aRC23du1affPNNwqFQjriiCMinTXhcFiTJk3SP//5T61bt07nnXeeHnnkkchoo7KyMj3++OO655579OGHH+qYY47ReeedF7kWi4uLdeutt6qgoED777+/3nnnHbVr1y5yDH799VfvilQklgUAAACAHcDHH3+scePGmf8WL14cWTYUCmnffffVP//5T+22225KTU1VUlKSkpOTlZmZqdtuu01nnXWWQqGQPvnkE602Hv5uqrKyUp9++qnKy8vVvn173XbbbZHcKlV5Pvr16xeVK+T555/XhAkT1Lx5c73zzjvaZ599lJKSEnldjx499PbbbyslJUXDhw/XL7/8UqtjlZ6erocffljp6elasWKFHnjggc1WqdnYiBEjNHLkSGVmZurVV19Vnz59Iu1NSUlRp06d9MEHHygtLU0TJ07UyJEjqz0cHTt2rJ588klVVFSob9++euGFF9S6dWslJycrOTlZrVq10j333KP+/fubUyIlqUmTJnrxxRe1//77Ky0tTUlJSUpKSlJaWpr69++ve+65R0lJSZo+fbqmTZsWeV1iYqKSkpKq5Xdr0qRJ5PVJSUmBOs2SkpI0aNAgJScna+3atZo8ebJzuSlTpig3N1epqam6+uqrI509paWlGjRokNasWaPDDjtMzz//vJo2bark5GQlJSUpPT1df//733X55ZertLRUDz30ULXBBfPmzdPvv/8uSXr44Ye16667Ro5henq6evXqpQ4dOmx2PzZGJwoAAAAA7AD+9a9/6dBDD3X+O+ywwzRkyJBqy4dCIfOHclJSko4//niFQiGtWbNGK1asCNSGyspKLV26NJJstaCgYLOvyc/P1yuvvKJQKKQbbrhB++67r7Nd++23n/bYYw+VlJTo5ZdfrtWI7VAopBNOOEF9+vSRJA0ZMkRDhw4NtM6SkhI99dRTCofDOu2003Tsscc627vzzjvrwAMPVHl5uZ577rnIusvLy/XII48oHA6rZcuWeuKJJ5xJ7BMTE3X33Xc7E7BuvB/WOQyFQjr66KOVlZWlioqKarlM4mnvvfdWs2bNVFFRoZdeeilqFkFFRYVee+01lZWVqXXr1uratWvkb2PHjtXPP/+s7OxsvfDCC85ZAImJiTr77LOVmpoamWJWZdmyZZHj+scff8RlFD85UQBsE6wpY7E+CH0rxfgmxou17S2RHK+4uNgZtyrF+FavKSoqMrdtHVurklHQzPObW3+sv/kmBK1JdR7rOlyzZo0z7pqqKNlJMSX7vFr7bZ1Xq62xhjbXddUlAMDW1bVr15i5QnbZZZeYr9/03qdly5aR6jCxRkNsLCkpSWeeeaaGDRumlStX6v7779cNN9wQM7nq4sWLtWTJEiUkJOjggw92tkXa8B13zDHH6Jdffonk8aiNlJQUPf300xo3bpzy8vL073//WyeccEK1aTcua9eu1W+//aZwOKzDDz/cbG9CQoLOOOMMjR49WtOmTYsss/Hre/To4UxZUWXXXXfVzjvvrFWrVgXap03b0aBBA6Wmpmrt2rXKyckJtA5fjRo10lFHHaXXX39dEyZMUGFhYbXkt0VFRfruu+8kSf369as2lWvMmDEqKyvTnnvuqZYtW5r333vttZeysrKUm5urJUuWaL/99pMkHXTQQWrdurWWL1+uBx98UF27do3kfqnp/TqdKAAAAP/jW2bdp/y61aHn+1Rsa+XC8qlkY3UG+pbqtjpgrY5Ia3mrk9z3vLo6iq0Oy/z8fGfc+qGZ68h3J0mzZ892xv/44w+v9fteNz4/Lnx/iMR6Ko669dRTT+nQQw81/25VTSkqKtL333+vH3/8UXPnzlVOTo6WL1+u5cuXq7KyUuFw2Kta2bHHHqv9999fkyZN0qOPPqrBgwfrmGOO0d/+9jf17Nkz6j0+c+ZMrVu3TgkJCfr8889j5gAZN26cpA2VqlavXu3Maeijffv2+vvf/6677rpLM2bM0CuvvKJBgwbFvF4XLVqk5cuXS5J++OEH8/NAkr744gtJGzpO5s6dq86dO6uwsDDygKYqj4olISFBjRo12ux+FBcXa+bMmRo1apTmzZunZcuWacmSJcrNzY1Uq4lXlbdNhUIhnX/++Ro6dKhWrVqlt956S5dffnnkGH755Zf6888/lZ2drRtuuCESD4fDGj9+vKQNOXFefPFF82FhWVmZCgoKVFlZqffee0/HH3+8EhMTlZGRoVtvvVW33XabZs2apcMOO0z777+/zjzzTJ111llq1KiR92dPrTpRXE/rrBPseopllR8KEpPcX6A/TJjgXHZbsMBRki5kvOFcb0RX76Pr2Fk9p0ETnLrWab3hXE+yXR+wG8+1q2LdCLle77o5cr0ZrA8w182eq02uG2DrjVwb3FwAAAAg3jIyMryKGpSWlurTTz/Vvffeq5kzZyocDispKUmZmZlKTU0NNBXHJSsrSx9++KHuu+8+vfbaa8rJydFrr72moUOH6sgjj9R///vfyCiXyspKffHFF5GOmn/961+BtlFZWemVw8QSCoV0+eWX6/XXX9esWbP04IMPasCAAWrevLlSU1Oj7s/D4bBGjx4d+f377LPPBt5WVUdtSUlJpEM0SAdJLJWVlRo3bpzuueceTZw4UcXFxUpOTlZaWpoyMjJUVFS0RTrne/bsqU6dOunXX3/VyJEjdfnll0vacLyGDx+ucDis7t27q0mTJpHX5Ofna/78+ZI2dChff/31gba18W/QUCikK664QhkZGXrooYf0xx9/aOzYsRo7dqyefvpp3XPPPTr11FO3XHUeAAAAAMD2p6SkROedd54+/vhjJSQk6KSTTtLAgQPVvn177bLLLkpJSdEPP/ygww47zGsUirThh23r1q319NNPa9CgQfr666/16KOPav78+fr000/1xx9/aMSIEWrbtq2k//+jODk5WQ888IAyMjI2u420tLRqP8hro1GjRnrhhRfUt29f5eTk6IYbbtBrr71mVnXZuHPp7rvvDlQKOCEhQTvvvHNUvDYdQZWVlXrggQd0//33q6ysTPvuu69uueWWyBSgrKwsLVu2TPvtt19k5ExdycjIUL9+/TRt2jSNHz9eixYtUvv27bVmzRqNHDlSiYmJuuaaa6rlPCkrK4t0RvXs2VMXXnhhoG117ty5WmdhYmKiLrroIp1xxhkaN26cXnjhBX355ZeaOXOmzj33XK1fv14XXHBB4I4UOlEAAAAAABHhcFiff/65hg0bplAopOuvv17/+Mc/opJ6upJ8+giFQurUqZN23313nXvuubr//vv18MMPa/r06Xr00Uf1yCOPKBQKaaeddlIoFFJCQoLOPfdctWjRolbbrYmDDjpIJ510koYOHapPPvlEM2fONHOGtWvXTqFQSOFwWP3796+WKDWI1NRUNWjQQHl5eVqwYEHMZcPhsNnRMnv2bD322GMqLCzUmWeeqWeeeSaqY8k1mqYuhEIhnXXWWXrooYe0bt06zZgxQ+3atdO0adOUm5urzMxMHXTQQdVek5mZGRn1365dOw0cODBQWWVr+9nZ2erbt6/69Omjn376SWeccYYWL16s+++/X6ecckrMBL0bozoPAAAAACCirKxMTz75pMrKyrTrrrvqjjvucHaY+I5AsVT9wL3zzju15557SlIk0WgoFNKpp56qtLQ0lZeXa9KkSXHZpq+kpCQ9++yzateundatW6d//vOfmjt3btRyoVBIxxxzTCSFwldffeW9raysLDVv3lyS9OGHH8bMqbJq1SrNmjUrKh4Oh/XEE09o9erVSkxM1GOPPeYcmVOV02ZL6NSpk3r27Kny8nI99NBDKigo0LPPPqvS0lIde+yxUSN2UlNTIzl8pk6dGjh58eakpKTowAMP1HXXXSdJWrhwodatWxf49XSiAAAAAAAiysrKlJubq3A4rAYNGjhzUYbDYU2YMCGuP8ATExMjnQcbj67o2LGjOnTooMrKSj3++ONeP3jjqVGjRrrpppuUlJSkL7/8UkuWLHEu16xZs0gZ5ldeeUU5OTlex6lRo0bq16+fQqGQFi9erCFDhpi5Q19//XWtXr3a+bclS5YoHA6byWfD4bB+//33mJ0TG79u7NixtT7fZ511lhISEvTrr79q6dKlGj9+vDIyMnT77bc7l+/fv7+Sk5O1YMECvfLKK3GtGNiuXTtJ/h1JgafzbKneKZ/Ess7SkY4LaEv5feZMZ9w1vMq5T44Pg7Vr1zrXuXLlyqiYKznqxqWjqsQqb7kpV/Jg14VrlTV1tcm1fVdiWKvMqCuJrWv7ruWsN13Tpk2jYq6EsVWJjYK0s7aJk11c7d9Rks36VsyI9TefBNixth3rQ9wnaVtNXXrZZc74f59/3hm3qllYVStiPV2KVQbYxbcCRqxtW8fdeo0V9/ncqmIl0baOh5V4OtZcbuvGMF43DZQr3sC35Lc1VNr6fHCt30qY7vM9ItnvG98y7fHies9YlWas5PauZO6Sfc9S2ykEm2NdB673j3VtWO/lpUuXOuPWkP2ffvrJGXf9aJL8Rwb4XMPx4nN8sXUkJSVFqpbMnDlT3377rXr37l2taspXX32le++9t0a/E1euXKmsrKxq35PhcFh//PGHZs2apVAopB49ekT+1qhRI11xxRUaNGiQxowZo7/+9a967rnn1Lp1a2di14KCAmVmZsb9PjkUCunCCy/U22+/rR9++EFjxoxxLpeWlqabbrpJY8eO1YwZM9S/f3+9/vrr6tixo7O9RUVFSktLi7zvQqGQzjjjDD377LMqKCjQvffeqwMOOEB77bVXtXNQVd3I+h6pOj7l5eV65ZVXqlXEqTreF110kQoLC8197tmzp9LS0lRcXKwhQ4bonHPOMb/PNicUCumUU07RvffeqyVLlujvf/+7lixZoq5du2qXXXZxnq+jjjpKPXv21Pjx43XXXXcpOztb55xzjrMvoLKyUsXFxdXusyoqKrR48WK1b9++2vrLysr0+eefKxQKqU2bNtXKKm8OOVEAAAAAABEpKSm66aab9NNPP2n9+vU6++yzddFFF2mPPfZQXl6eJk6cqM8++0x77LGHfv75Z68qPVUJa5cuXaqjjz5au+++u1JTU7Vw4UK9/PLLWrx4sdq0aaOLL7642o/eSy65RL///rtefvllDR8+XJMnT478wG7YsKEKCgqUk5OjqVOnqrS0VEOHDq2TDteMjAw9/fTT6t27d8wRHEcffbT+8Y9/6OGHH9YPP/yggw8+WL1799bBBx+sZs2aqbi4WCtWrND06dO1ePFiDRs2rFpOju7du+vBBx/UrbfeqsWLF+vwww/XySefrIMOOkjhcFhjx47VZ599pr322ktFRUXKy8urtv2EhATdcMMN+uyzz7R06VLdfvvt+vnnn9W7d28VFxdrypQp+uyzz9S8eXO1aNFCOTk5zv1ISkpSt27d9OOPP2r06NE64YQTdMghh6ikpER33nmn+ZDO0rRpUx1yyCF699139fnnn0uSzj//fPcACW14ADF48GCdeOKJmjFjhq6++mo99dRTOuGEE9SpUyclJydr9erVWrx4sb7//nudeeaZuvrqqyPXzrvvvqtrrrlGxx57rLp3765WrVopNzdXX375pb788kslJibq7LPPDpwPRaITBQAAAACwkVAopGOPPVY33XSTnnjiCa1cuVL//ve/JW34cZ6WlqbLLrtM11xzjY4//nhNnz5dEyZM0IEHHrjZ0R/l5eVau3atZs6cqd9++y0yAikUCikxMVFdunTRE088oZ49e1Z7XWpqqh577DF17NhRzz33nBYsWKDBgwfrjTfeiLw+ISFBCQkJ6tGjR52ObOrWrZvOPPNMvfzyy+ZInMTERN1xxx3afffd9cADD2jOnDn68MMP9f7770faW7XPHTt2jBpNkpCQoMsuu0xpaWm6++67tWzZMr366qt69dVXFQqFlJSUpHPOOUePPPKI+vbtq4kTJ0Yd+913312PPvqobrjhBi1fvlyvvPKKXnnllcjr+/XrpwceeED/+Mc/9NZbb2n69OmqqKioNlosOTlZjz/+uPr166cVK1Zo1KhRGjVqlBISEnTbbbd5d6JUVcoZOnSoysrKlJ6ermOPPda8bkKhkHbeeWeNGDFCd9xxhz766KPItVN17BMSEhQKhZScnKyjjz662uuXLVumoqIivfvuu3r77bcVDocjxz0rK0vnnnuu7r77bq+EtXSiAAAAAMB2as8999SDDz6ocDgcKRkcRFJSku68805ddNFFmjBhghYtWqRQ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\n",
      "text/plain": [
       "<Figure size 1400x800 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 尝试我们的规则在训练数据上：\n",
    "# 定义规则函数\n",
    "rule = lambda X: np.logical_and(X[:, 1] == 0, X[:, 40] == 1)\n",
    "\n",
    "# 创建图形对象\n",
    "fig = figure(0, (14, 8))\n",
    "\n",
    "# 在训练数据上测试逻辑规则\n",
    "testLogicalRules(trainingExampleIndices, data, fig, trainX, trainY, rule)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And testing data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Confusion Matrix:\n",
      "[[ 254   87]\n",
      " [ 237 4296]]\n",
      "Recall (TPR) = 0.745 (Portion of fingers that we \"caught\")\n",
      "Precision (PPV) = 0.517(Portion of predicted finger pixels that were actually finger pixels)\n",
      "Accuracy = 0.934\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzUAAAG4CAYAAAB8XcnDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB/fElEQVR4nO3dd3QU1f8+8Gd2s9lNJfSW0JsCCkgVARVFsIOFKiIKggVURAUsKIpgR7B8UKooAiKoVJEqICAivSMCCSGUkJCeTXZ+f/DN/gjM+5IZlpCR53UO5+jdnT7Z3Tv33udquq7rICIiIiIisinHld4BIiIiIiKiS8FKDRERERER2RorNUREREREZGus1BARERERka2xUkNERERERLbGSg0REREREdkaKzVERERERGRrrNQQEREREZGtBRX0jcWKFTMsz8nJEZdxOIzrTD6fT1wmODjYsNzpdJpel+o1I0FB8unIzs42LNc0TVxG2mfpnEnnS/WaNHdqYc2pKh2/6rxI51I6/6p1qc6ZJCMjw7Dc5XIZlqvuI+k8W1mXdF+o7ktpmbS0NHEZIiIiov8attQQEREREZGtsVJDRERERES2xkoNERERERHZGis1RERERERka6zUEBERERGRrRU4/UxKbbKSPqVaJjc317DcSpqU2fQzVWKYleM3m0wWyO1L51G1HVXKltntW0lfk1LOzF5HQE6eU21HojovXq/XsFw6flVa4JVOsiMiIiKyK7bUEBERERGRrbFSQ0REREREtsZKDRERERER2RorNUREREREZGus1BARERERka0VOP2MiKgwFCtWzLDcStKelHRnNlHO4/EYlmdkZIjLSKl9UpqetE+q9D+zKXvStqXjy8rKErctJVJmZ2cblkvXz0qypNnrKq1L2lcV6RxKiZPS+1X3jtvtNiw3+zcgpTNK5aptSFT3CBFRYSpwpUb6wFZF50ofzKq4YelLRvriU33hm91n1X6ZjQEGzH/Bqr5MMjMzDctDQ0MNy1XXRfrBYyWe28p5kbYTHBxsWJ6eni6uy0o8tfRjTFqX6hjN/pBR/Zg2+6MPUF9nIiIioqsFu58REREREZGtsVJDRERERES2xkoNERERERHZGoMCiKhIMTv4XTWuSBqPZHa8nTSmTTVGKpBjtyTS/krrksql86HaJ9VYLyNmx4xZGX8m3SPSNqTjU40v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qgnMpGS28uXLG5Zv2bpVXBdUrwnq1zPuphAXF2dYrko/k1jpFrNq5SrT2wmksLAww3Ir3RvMdtNQvWYlSU66/6ykslk5FiIiIiJiSw0REREREdkcKzVERERERGRrTD8joiLFbHc7KxOQSl39zCY/qboZShMGS115pW6Z6/5YJ27DrPs73m9YfuLECcPyQHaJNXudVBM7r/59tal1BdK0b6YZlpcrX86wXJUgJwnUOZS6c2dmZppexsq9QERUmNhSQ0REREREtsZKDRERERER2RorNUREREREZGuXPKZG1c9W6m9uJe5Woupj7Ha7Dct379ljWK6aRVoXEpJVy3Tvcb1huTSrt4p0nqXjD+Q5DrTjx4+ber+VWdtVUd9mx1NIceKA+fEfqvdL19LK8RMRERFdTdhSQ0REREREtsb0MyIqUswmkKlasqQWO1WylhGpFc1KS5mUctakSRPD8nmYZ3obkrlz5hqWX1v3WsPylJQU09uQrpN0rlwul2F55cqVxW1sx3bT+3W5SWl3Uiu76r412wJs9n5WteSbvX5EREUFW2qIiIiIiMjWWKkhIiIiIiJbY6WGiIiIiIhs7ZLH1FjpF2wlzclsn2EA8Hg8xts3113Z8jLfTvvWsDyyWKRhuarPsnQupfKQkJCL7N2Vk5ycbFguHb8q4c5KP28rM9BLpHtZ2i9VX3azY0kAdcobERER0dWCLTVERERERGRrrNQQEREREZGtMdKZiIoUs/HJqu6sZpntMquafFhSrFgxw/J5vwQuutksK91VzZ536dxKkyRv2ybHNgfuipsndQaNECKdrdy3ZiOdpb8ZK13AzXZ1JiIqKthSQ0REREREtsZKDRERERER2VqBu59JTc+qNCcryUxmZwCXZnEG5PSzK03qjqA6X2a7ekRERJh6f6CpOiqUTE83XiaAM1mrlgkODja1fdU9Ll0X6VpKXW0AeWZ11T1ORERERGypISIiIiIim2OlhoiIiIiIbI3pZ0RUpEjdAKUufapUJqlLn9mENSvblrZRunRpw/IDOCCu63KTJsQNZEqWtK7ISOPJiDWcFrd9uam6z95wQyPDcp9vt1BuflJhqcurtC6zXXdV3XOl68T0MyIq6thSQ0REREREtsZKDRERERER2RorNUREREREZGsFHlMj9bOVopYBa7Ntm+23K8XzAkBYWJjp7QeSdCRh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\n",
      "text/plain": [
       "<Figure size 1400x800 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 创建图形对象\n",
    "fig = figure(0, (14, 8))\n",
    "\n",
    "# 在测试数据上测试逻辑规则\n",
    "testLogicalRules(testingExampleIndices, data, fig, testX, testY, rule)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Generalizes Well! Now 3 pixels:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Time elapsed = 50.372 seconds.\n"
     ]
    }
   ],
   "source": [
    "import itertools\n",
    "\n",
    "rules = []\n",
    "numErrors = []\n",
    "startTime = time.time()\n",
    "\n",
    "# 遍历所有可能的规则组合\n",
    "for c in itertools.combinations(range(81), 3):\n",
    "    i = c[0]; j = c[1]; k = c[2]\n",
    "\n",
    "    # 第一种情况：i=0, j=0, k=0\n",
    "    yHat = np.logical_and(np.logical_and(trainX[:, i] == 0, trainX[:, j] == 0), trainX[:, k] == 0)\n",
    "    numErrors.append(sum(abs(yHat - trainY)))\n",
    "    rules.append([i, j, k, 0, 0, 0])\n",
    "\n",
    "    # 第二种情况：i=0, j=0, k=1\n",
    "    yHat = np.logical_and(np.logical_and(trainX[:, i] == 0, trainX[:, j] == 0), trainX[:, k] == 1)\n",
    "    numErrors.append(sum(abs(yHat - trainY)))\n",
    "    rules.append([i, j, k, 0, 0, 1])\n",
    "\n",
    "    # 第三种情况：i=0, j=1, k=0\n",
    "    yHat = np.logical_and(np.logical_and(trainX[:, i] == 0, trainX[:, j] == 1), trainX[:, k] == 0)\n",
    "    numErrors.append(sum(abs(yHat - trainY)))\n",
    "    rules.append([i, j, k, 0, 1, 0])\n",
    "\n",
    "    # 第四种情况：i=0, j=1, k=1\n",
    "    yHat = np.logical_and(np.logical_and(trainX[:, i] == 0, trainX[:, j] == 1), trainX[:, k] == 1)\n",
    "    numErrors.append(sum(abs(yHat - trainY)))\n",
    "    rules.append([i, j, k, 0, 1, 1])\n",
    "\n",
    "    # 第五种情况：i=1, j=0, k=0\n",
    "    yHat = np.logical_and(np.logical_and(trainX[:, i] == 1, trainX[:, j] == 0), trainX[:, k] == 0)\n",
    "    numErrors.append(sum(abs(yHat - trainY)))\n",
    "    rules.append([i, j, k, 1, 0, 0])\n",
    "\n",
    "    # 第六种情况：i=1, j=0, k=1\n",
    "    yHat = np.logical_and(np.logical_and(trainX[:, i] == 1, trainX[:, j] == 0), trainX[:, k] == 1)\n",
    "    numErrors.append(sum(abs(yHat - trainY)))\n",
    "    rules.append([i, j, k, 1, 0, 1])\n",
    "\n",
    "    # 第七种情况：i=1, j=1, k=0\n",
    "    yHat = np.logical_and(np.logical_and(trainX[:, i] == 1, trainX[:, j] == 1), trainX[:, k] == 0)\n",
    "    numErrors.append(sum(abs(yHat - trainY)))\n",
    "    rules.append([i, j, k, 1, 1, 0])\n",
    "\n",
    "    # 第八种情况：i=1, j=1, k=1\n",
    "    yHat = np.logical_and(np.logical_and(trainX[:, i] == 1, trainX[:, j] == 1), trainX[:, k] == 1)\n",
    "    numErrors.append(sum(abs(yHat - trainY)))\n",
    "    rules.append([i, j, k, 1, 1, 1])\n",
    "\n",
    "timeElapsed = time.time() - startTime\n",
    "print('Time elapsed = ' + str(round(timeElapsed, 3)) + ' seconds.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "218858"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 找到最小误差对应的索引\n",
    "np.argmin(np.array(numErrors))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[9, 40, 53, 0, 1, 0]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 获取索引为218858的规则\n",
    "rules[218858]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "682560"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(rules)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# 定义规则函数\n",
    "rule = lambda X: np.logical_and(np.logical_and(X[:, 9] == 0, X[:, 40] == 1), X[:, 53] == 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x1987e0bebc8>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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oYceinHjxtV1zrp166JSqQxuR44caWhQAGB4hSzLsnoP3rp1a3zqU5+Ktra2wX39/f1RKBRizJgxUavVhvza66lWq1EqlaJSqUSxWGx8cngLKRRaPcHoqv//OkC93cz1kvsll1wSTz311JB9K1eujFmzZsXnP//5k8YcAGiOXEHv7OyMOXPmDNn39re/Pc4888zX7AcATh0/KQ4AEpD7Kff/a9euXaMwBgAwEu7QASABgg4ACRB0AEiAoANAAgQdABIg6ACQAEEHgAQIOgAkQNABIAGCDgAJEHQASICgA0ACBB0AEiDoAJAAQQeABAg6ACRA0AEgAYIOAAkQdABIwNhWDwCcXJa1egI4DRUKrZ7glHKHDgAJEHQASICgA0ACBB0AEiDoAJAAQQeABAg6ACRA0AEgAYIOAAkQdABIgKADQAIEHQASIOgAkABBB4AECDoAJEDQASABgg4ACRB0AEiAoANAAgQdABIg6ACQgFxB/+IXvxiFQmHINmvWrGbNBgDUaWzeE2bPnh2PPvroH7/B2NzfAgAYZblrPHbs2Dj77LObMQsA0KDc76E/99xz0dXVFeecc04sX748Dh8+/IbH12q1qFarQzYAYHTlCvqCBQvi/vvvjx/96EexcePGeP755+PDH/5w9PX1DXtOT09PlEqlwa1cLo94aABgqEKWZVmjJ7/66qsxbdq0uO222+Kaa6553WNqtVrUarXBr6vVapTL5ahUKlEsFhtdGgDeWKHQ6glGRTUiShEn7eaInmh75zvfGe973/vi0KFDwx7T0dERHR0dI1kGADiJEX0O/dixY/Hzn/88Jk+ePFrzAAANyBX0z33uc7F79+747//+73j88cfjU5/6VLS1tcVVV13VrPkAgDrkesn9l7/8ZVx11VXxP//zPzFx4sT40Ic+FHv37o2JEyc2az4AoA65gv7www83aw4AYAT8LHcASICgA0ACBB0AEiDoAJAAQQeABAg6ACRA0AEgAYIOAAkQdABIgKADQAIEHQASIOgAkABBB4AECDoAJEDQASABgg4ACRB0AEiAoANAAsa2egAAaIosa/UEo6NajSiVTnqYO3QASICgA0ACBB0AEiDoAJAAQQeABAg6ACRA0AEgAYIOAAkQdABIgKADQAIEHQASIOgAkABBB4AECDoAJEDQASABgg4ACRB0AEiAoANAAgQdABIg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\n",
      "text/plain": [
       "<Figure size 600x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 创建规则向量\n",
    "ruleVector = np.zeros(81)\n",
    "ruleVector[9] = -1\n",
    "ruleVector[40] = 1\n",
    "ruleVector[53] = -1\n",
    "\n",
    "# 创建图形对象\n",
    "fig = figure(0, (6, 6))\n",
    "\n",
    "# 显示规则向量的图像表示\n",
    "imshow(ruleVector.reshape(9, 9), interpolation='none', cmap=rwb)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Confusion Matrix:\n",
      "[[ 327  168]\n",
      " [  73 7299]]\n",
      "Recall (TPR) = 0.661 (Portion of fingers that we \"caught\")\n",
      "Precision (PPV) = 0.818(Portion of predicted finger pixels that were actually finger pixels)\n",
      "Accuracy = 0.969\n"
     ]
    },
    {
     "data": {
      "image/png": "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fifJrFmzdNppp7mFFVZn55131i233LLe/OCura3V888/r++++05z585VWVmZFixYoNraWrVu3Vo9e/bU5ptvrsMPP1w9e/ZUdnZ2izj2uro6Pfroo3r++ee166676uqrr25U8u7a2lrdf//9euONN3TggQfqggsuWO8KVKwpTepEsXrwQioRRK1KElKpwMoabi3nXXhRL6SWWCWlKZWFQpa1zkdOTo65rHXerQoo1oe796FVUVERadmmVG+S7Ez+UStKeax9aup5a45qSy1RY6qGhD5lCK3WYV2L9Y455mgz/t//vmDGvasonV/dkyZ9b8Z79NjIjHfv3t1d1+23X2T/4dLLzHDcOZCYc+De8pK09152pYqamrH2NgKrQ6S6MQl9oteYbYRW50ln9YvQyhvrstDqXaHt39TvC8mvKNfStG7dOinmVS/7/e8vt1fyt1vNsPtZ4DTlhx9+YMZXrLjZjHvnz/u8XBvmzJljxkPfr8355D103VTnWTPKy8v12WefmRVE6+rqEiMS6v/9UlFR0ZrYzTWmpqZGd999tz777DPFYjFlZWUljj0ej6u2tlZ1dXW66qqrNHjwYN10003abrvt1npHSnV1tf7whz9o8eLF+uCDD3TEEUdo6623brBMPB5XeXm5JkyYoAEDBpgVFlesWKFrr71WJSUl+vzzz3XEEUeod+/ea+ow1iuMRAEAAACA9UzXrl316KOPmh1ujz/+uN566y3l5OTonHPO0aBBg5KW6dat25rYzbWibdu2+u9//6tOnTopOztbK1as0KxZs/T3v/9dH330kd555x2NGzdOb731lrbeeuu12pESi8XUpk0bLV68WK1atVJubm7SMu+9955OO+00FRcXa8qUKerRo0fSMhkZGSosLFRJSYkKCwvNB9uIhk4UAAAAAFjPtG7dWscdd5z5t9LS0kQnyplnnqlf/epXa3jv1q527dppr732atA5suOOO+rggw/WY489pgsvvFALFy7UlVdeqVdeecUcOb6mZGdna/jw4Xr22Wd19NFHa/PNN09apri42B21Vq+oqEgvvPCCXnnlFZ166qnrdSdZc6MTBQAAAACwwcvNzdVpp52mp556Sh9//LHee+89zZs3Tz179lxr+xSLxbTVVltpyy23bNKImFgspkGDBmnHHXdc61OU1nVkkgEAAAAAJInH46qurlZ1dXUil1R9/pDq6urEVKF4PK6amprEsqny3tS/dnXL/XJb1dXVqqmpSeRzaS45OTk66aSTJK3KkfjBBx+4+1ZXV9fguOvzqkRRf2z1r/eOrb5t65f7+d/r22bRokWJWHFxcWJ/fnne6tfzy/xroefk58eb6tgac95+3i71/6K26ZoSuRPl50mHvORD0qoTYP2rq6tL+hePx5P+WduxlvOWtbZjLZeRkWH+i3rsUY9nTSbOys7OTvoXsj9Rl23qMWZmZib9C1mndX1Z5yjqct71EPU6DmnPqNdNiLV5zQEAAGD9tXDhQvXp00f5+fl6//33VVdXp5EjR2qPPfZQq1atdMMNNyR+9B5wwAHKz89Xt27dUv6OuPbaa5Wfn6/8/HwtXbrU3XZxcbEuu+wyDRo0SO3atVN+fr569uypY489VmPGjGm2e95YLKb9998/8f/Lly9PWqaiokKvv/66jjrqKG255ZYqKipS165dtfPOO2vYsGGaNWtWyv1buXKlnn76ae27777adNNN1aFDB2255ZY66qij9M477zTonKitrdV+++2XOP6fO+uss5Sfn68LLrggEdt2220T7Zufn6933303sc+77LKL8vPzNWjQoAb7d/XVVys/P1+tW7fW559/nrJ9Pv74Y7Vt21b5+fn629/+lvT3n5+39u3bKz8/Xz169NCxxx6rzz//POW1MXfuXF1//fXaZZdd1L17d3Xr1k3bbbedTj/9dE2ZMqXF/M5hOg+AFiW0AkY6q/OExq1s9/V++ukn928h1sRXxezZ9hzaE0/cw31Nu3btzHiqqjohyz9w//3ua+bde68ZD6kOJ4VVVannPXFJ9STGkmpudejTlnRWH/KOY21Xn2sOXjt758aLe21mtbN3jXrtu3LlSjMeqrmrf3Xo0CEp5s3N99o99LNjwoTxZrymxi4nW1JSYsbTcW0396D44uJiM+61ZehniFdhMYS3Te/zxvvcamlPm7Hqsy8rK0t1dXWqqKjQm2++qZNPPlnLli2T1PCc1dXVRRqJUd/pUv/f1t/ffvttXXXVVRo3bpzatm2bqBhYUlKi4cOH64MPPtA111yjCy64oFHlflen/vgkqVWrVg3+Nn/+fJ122mn68MMPVV1drY4dO6pXr16qrq7W+PHj9eWXX+qll17Stddeq9/97ndJnzPFxcU68cQT9f777ysrK0tdu3ZVly5dtHz5cr3++usqLS3VPvvs0+A1Xtt27txZm222mUpKSrRgwarPv27dujWorPTz/ffWc+SRR+quu+5SRUWFHnnkEe20007m+zQej+vRRx/VypUr1aZNGx122GEN/vbL81afd2V15y0ej+ubb77RkUceqdmzZ6uwsFCdOnVSbW2t5syZo0mTJmm33XZT3759jbO15tGJAgAAAABI6b333tPzzz+fGHWy2WabmVV9Vmd1owkmT56s0047TQsXLtSgQYP0z3/+MzECo6SkRBdddJFefvllXXfdddppp520yy67NOp4Uu3ffffdJ2lVh9+ee+6Z+NvSpUt14IEHaty4cSoqKtKll16qs88+W0VFRaqpqdFXX32loUOHaubMmRo2bJgKCgp00kknJTok4vG4rrvuOr399tsqKirSddddp1NPPVXZ2dkqLS3V+PHjNW/evMg5S/70pz/pD3/4gx5//HFdeOGFkqQnn3xSO+64Y2IZq9zxL2277bYaOHCgPv/8c73zzjsqKytTYWFh0nLl5eV69913E/lV+vXrl/jblClTGpy3hx56SL169ZK06rxdfPHFGj58uK677joNGjRIu+66a+K1FRUVOvPMMzVjxgxtvPHG+uc//6kddthBdXV1WrZsmd58880Gy69tdKIAAAAAAFJ67LHHlJOTo5EjR2q77bZL/NAPTVKaavmqqipdeumlWrBggbbbbju9/vrrateuXeI1bdq00b///W+dcMIJeu2113TNNdforbfeSttolHg8ru+//14vvviiJGnrrbfWRhttJGnVaMLzzz9f48aNU0FBge6880795je/abDtffbZRx988IGGDBmi6dOn68orr9SBBx6o9u3bS1o1evGVV16RJJ1yyikaNmxY4vVt2rRJjLiJ2qZ5eXnKy8tTly5dErG+ffs2GIkSRU5Oji677DKdcMIJmjdvnr788ksNHjw4abkvv/xSCxYsUE5Ojq644orEvldVVemyyy5Led6eeuopnXjiiXr11Vd19dVX69133028ft68efrmm28kSXfccYeGDBmSeG379u11zjnnBB1Pc1v/xucCAAAAANImHo+rtLRUZ555prbffntlZGSkzJO5unV5vvnmG33wwQfKy8vTQw891OCHeL2CggKdd955ysrK0tixYzV16tTgffDyEo4aNUonnHCCli1bpry8PF111VWJKW+TJk3S66+/rng8rkMOOSSpA0Va1fnRu3dvDRs2TFlZWZo1a5Yef/zxxN8XLFiQmKJXWFiYNNWnsW3aVPUjS1q1aqWqqio9//zzSVN+6urq9NJLL6m6ulrt2rXTNttsk9jXcePG6f3331deXp7+8Y9/rPa8ffXVV/rhhx8Sf/v0008TU17btGmT9Nq11S6eyCNRrIvdmu/mHZw159TqMbRiIXM+oyab8eYwW/tv7bv1em9e7UknnZgUiz/9TPK2zVdHl5ubmxRr6pxs6/VWG4XMybfazppr7p1L6zijXgveOrOzsyOt02oj77xbr7fmHTd1PvbarFsPAACADUPXrl113nnnNfnHbKrfDcOHD9fKlSu1zTbbqF+/fu6yO+ywg3Jzc1VaWqo5c+Y0mFYSxbx583T++eerU6dOyszM1OLFizV+/HiNGTNG5eXlatOmjX7729/qyCOPTOzDiy++qGXLliknJ0dnn312ypw/J510ku666y5Nnz5dr732moYNG6aMjAx1795d/fr109ixY/Xvf/9bJ598srbaaqtmyesSqkePHtpjjz302muv6dVXX9Utt9zSIJ/KypUr9cYbbygej+vYY49tkA/r5+etf//+7nnbfvvtlZubq7KyMs2aNUv9+/eXJB100EFq06aNli1bpj//+c8aMGCAOnbs2KI6Tn6OX18AAAAAgJQ6d+5sJpIOleqhd31lmJycHI0dO9adllJeXp5Ikvrmm2/q//7v/4IeTFZVVelf//pX4uFyZmamcnJylJeXp7322kt/+MMftPPOOyceVsbjcc2cOVPSqs6kbbbZJuX6W7durZ49e2r69OmaOnWqli5dmmi7YcOG6ZxzztG8efO011576fDDD9eJJ56oPfbYQ3l5eWu14+Doo4/Wm2++qdmzZ+ujjz7SAQcckPjbF198oenTpysvL08XXHBBgzwvn332maSw8/bWW29pyJAhysjIUFFRkY477jg9+uij+uijj7TDDjvo9NNP16GHHqptttmmRXQy/RydKAAAAP/j3dy7VWUCyi2ma917772XGX///ZGR90VKX/Wvr7/+Jik2cOC25rKtW7c241+OHWvGt99hBzMe2mZe3E+4WOrEm88BBx5gxketHGXGQ0Z/p4qHVBELrWoVes231KfOWOVXv/qVOXo7lHeeS0tL9f3330uSxo4dqyFDhqRcT/11NHv27ODSt+3atdN//vMfVVRUqK6uTq1atVKHDh3UuXNndevWzXy/1E8bat269WrbIScnRzvvvLNGjRqlqqqqREXH+lEq0qqksNOnT9fjjz+uJ554QptvvrluuukmHXHEEWulKl4sFtORRx6pm266ST/88IOef/557b///orFYorH43r22WdVVVWlQYMGNSi1XFZWpsmTJ0sKO28/LwOdlZWlu+++W/n5+XriiSc0c+ZMXX/99brhhhu0zz776G9/+5sGDBjQYj4j6EQBsE7wpuClElqSNHTbqb6wly5dGrSN55571owfd9zx7mtee+1VM37IIYea8f/8J3kaoSSdcELylENJKTPut2nTxv1bOixfvtz9W2mp/eMmtDSmt3yq6yN0G6E/6CS/JGjodehN3Ux1AxJaLhkAgFDed0plZWXiu65Hjx4aOHBgpPXttttuwZ0Obdu21T777BP0o7x+G/X5VFKJx+OJMvUZGRkN9i8jI0Mnn3yy9t9/fz3zzDN69tln9c0332jKlCn6zW9+oz/96U+67LLL1kqHQWFhoXbffXdNnTpV77//vpYuXar27durrKxMI0aMUGZmps4///wG6RUqKioS9xxNOW/5+fm64447dPbZZ+uJJ57Qiy++qOnTp+vtt9/Wt99+q+HDh2vHHXdsER0pdKIAAAAAAJqkqT9uc3NzEw8SDjvsMN17770t4gdzvfrKOYsXL1ZVVVXKZcvLyzV69GhJqzoHfp5bRFrVVp06ddKFF16os88+W6NHj9Zpp52mmTNn6rrrrtPBBx+sLbbYonkOJIXMzEwNHTpUTz31lObPn68ffvhBO+20kyZMmKAFCxYoLy9Pe+yxR4Pzkpubm3hw2dTzlpmZqV/96lf661//qt///vd69tlnddlll2nevHk6++yz9dFHHyW15drQpE4U62lZyFM3K2Y1eFPXGfIELer2rVh1dbW5zvoMzKvzyehPkmK77rqbueynn45Oij33XHLt7IMOOjAp5j0hX7hwYVJs8eLFSTHr6WZIG0dNyuutM+qbMqRH2lqndX1b6wwZkhr1PeMdY1OSKQMAAADNIRaLJUaprly5UtOmTdPmm29uLjtjxgwzXlhYqG233VZz587VJ598opUrV7aIH8zSquPbbrvt9PTTT2vx4sV67bXXdOqpp7r37PPnz9ecOXMkrRpxUVhY6K47JydHgwcP1mOPPaaDDjpIlZWVmjBhwlrpRJFWjUTu27evJk6cqHvvvVfbbLONHn30UVVWVurQQw9V7969Gyxff97mzJmjjz/+OG3nrV27djrrrLM0depU3X777ZoyZYqWL1/eIq4JShwDAAAAABotIyMjkT+jpqZGY8eONR/0zZo1S++88465jlgspgMOOECxWExTpkzRJ5980qIeFh599NFq37696urqdN999yWm6/xSPB7X3/72Ny1YsEAZGRkNKvx4YrGYNttsM+Xm5qqurs6duuz5+YPaSZMmBb32lzIyMnT44YdLkkaNGqXi4mKNHDlSOTk5uuyyy8x9//l5+/jjj9N23uo7r6RVnXONmd7fHJjOAwAAsBqh+W3ScQPpjXScO3du0Hq++upLM77ddtub8fHjvzXjAwZsbcZfeeXlpNjXXx9uLvvPf55rxr0cVt97PwacofTeeuqH4Udd/tln7zXjxx9/QlIs7vw2ijmXgLf8llvMNOPeSOfQBLLesYaMqA1JQiv5uZmaOtoYLU8sFtPuu++uwsJClZaW6sYbb9ROO+2kTTbZJJGYdO7cuTr55JO1YsUKdz2//e1v9fe//10TJ07U6aefrueee06DBg0yr7F4PK7a2lr3+ku3nj176uyzz9Ytt9yib775Rpdccoluv/32BqNM6ss0P/HEE8rIyNCQIUN00EEHNfj7ihUrVFRU1OB6j8fj+u6771RZWans7Gz16tUraN+GDBmi7OxsVVdX6+mnn05UvWmMWCymoUOH6qGHHtKcOXP017/+VdOmTVP//v21zTbbmO/T0047TQ8++GDivD3//PNB562urk7l5eUqKChosP66ujqN/V/i8W7duqVIBr5m0YkCAAAAAGiS/v37a99999VLL72kiRMn6qCDDtKFF16o1q1ba/z48XrxxRc1d+5cnXbaafr73/9urqNVq1a6++67ddxxx2nu3Lk69NBDdcABB+jkk09Wz549lZmZqWXLlmnhwoX6+OOPtdNOO+mYY45ZI8eXmZmpP/3pTxozZoxGjhypxx9/XDNmzNCFF16oHj16aNmyZXrvvfd09913q7KyUptuuqnuvffeBpV8iouLte++++rwww/XnnvuqY4dO6q2tlbffvut/vjHP6qiokJ9+vRZbQnlX8rNzdUmm2yiH374QS+88IJ69OihwYMHq7q6Wvvtt19wieBu3bqpX79+Gj16tB599FHF43Edc8wxbuniVq1a6Z577tGxxx6refPmpTxvn3zyiXbccUcde+yxide/9957+sMf/qDzzjtP/fr1U7t27bR8+XK9/vrr+uc//6mMjAwNHjzYrfC2ptGJAqBFSWc5RK8H3nsyFrpPqXhPWf74x6vNeP/+9lPV4cNfcrfhPXh58803zLhXUOeNN14345tv7leiCf0yDlVRUeH+rb5MYFSh5y9VBZ50XZ+p9sm7bkOHsHr7lOrJ1NooqQgAWD9kZmbq1ltv1fTp0zVu3DhNmTJFF1xwgaRV33sbb7yxnnrqKQ0aNEhPPPGEOR0mFotpyJAheu2113T55Zfriy++0DPPPKPnnnsu8R0Vj8dVV1enuro6XXPNNTr66KPX2Cim3Nxcvfbaa7rqqqv097//XW+//bbee+89ZWRkKB6Pq6amRrm5uTr77LN1xRVXqGfPng32berUqfrhhx90/fXXKzMzM/G6+uPZeuut9a9//UsdO3YM2q+8vDxde+21Ouuss1RaWqqbbrpJN998s6RV96Sh9225ubk6//zzNXr0aJWVlSk3N1dHHHGE286xWEx77723XnvtNf3+97/XmDFjUp63q6++Wsccc0xilNLIkSM1btw4DR06VJmZmYl4bW2tsrOzdcABB+iBBx5IS4ntdKATBQAAAAA2IN26ddP//d//qaCgIGWizuzsbO28887q3bt3pESnm2yyiT755BP961//0qhRo7R48WJ16NBBO+20k8444wy1bdtWZWVlOuCAA1RcXKw5c+aoQ4cODdYRi8W0yy676N1339V7772nzz77TNOmTdPChQtVUFCg7t27q2fPntp333217bbbBhWd2G677ZSXl6du3bpFeo0lNzdXf/vb33Tuuefqueee07fffqvFixerU6dOGjBggI4//nj17t3b7LjYfvvt9dJLL+njjz/W999/rwULFqigoECbbLKJdt99dx166KFJU1pisVjiONu2bWvuUywW0wknnKAuXbro9ddf19SpU5WVlaVNNtkkMW0mIyNDO+ywg1q3bq0+ffqs9jgPPfRQ7bfffqqsrFTfvn01YMCAlMvXn7d33nlH7733nj7//HNNnTp1tectFovpyiuv1FZbbaWvvvpKkydPVmlpqdq3b6++ffvq0EMP1Q477KCc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gQNTjoKMx+MaM2aMJk2apDlz5qioqEidO3fWoEGDtOmmm67xUWx0ogBoUbxRVt5Q+lQjcbwP1NCqLN5oI6/6Sar9WrlyZdA+pTo+b2i2t67QKjze8lL4NAOvgoy3nlTDzr2kd3vssYcZ//HHH8341KlTzXhxcbG7bW+/vC9+77hT3YSETi8IbcNUN5eNqVgEAFj/VFRU6PLLL9czzzyjkpKSpO/3jIwM9e/fX//973/dEemplJaW6vTTT9err76qqqqqxHdcLBZTZmambrnllqSyyPF4XPPnz9eZZ56pt99+O/GdFY/HE6+74IILdM0116hdu3ZNOHpbLBZThw4dEv//y+/G8vJyXXnllXryySdVUlLS4Hs7FoupTZs2OvXUU/WXv/zFHfXx/fff69RTT9XXX3+d6Dyof327du305ptvascdd5S06p7y/vvv18yZM3XmmWc26ES58847tXTp0sR66/Oj1Gvfvr3OOOOMRCfKZ599pr/+9a+SpPPOO0+tW7eWJE2aNEkPP/ywMjMztddee2mXXXYx97u6ulpXXnml3nzzTXXo0EHnnHNOg20vWLBAZ555pt566y3zvJ133nm69tprzfM2Y8YMnXzyyRozZkyD6UmxWExFRUV64YUXNGTIEHO/mgudKAAAAACAhFgspsmTJys/P19HH3209thjD7Vu3VrLli3T6NGj9fTTT2vixIk66qij9OGHHwZV9ampqdGFF16oF154QQUFBTr55JO1//77q7KyUt9//73effdd7bjjjkkPCSZMmKDjjz9ekydPVs+ePXXRRRepd+/eqq6u1kcffaTHHntM99xzj3788Ue98MILaa+eU1NTo1deeUXSqpQLHTt2TPyttLRUp556ql555RVlZ2drn3320SGHHKLevXtrxowZeu655/Tpp5/q/vvv1+zZs/Xoo48mTcMpLi7WUUcdpcmTJ6tHjx46/fTTtd1222nevHmaMGGCvvnmG/Xp02e1+xmLxfTvf/9bZWVluu+++/Thhx8qMzNTjzzySCL5bE5Ozmo7mjIyMnTuuefq+eef14oVK/TBBx9o5513Nh/eLF++XF999ZXi8bgOPPBAdevWLfG37777LnHeNtpoI1100UXaeOONG5y3++67T9OnT9cLL7zQ4CHlihUrdPzxx+uLL75Qly5ddNppp2nnnXfWwoUL9d1332nMmDHaYostVtsm6UYnCgAAAACs56IkGa3/gZybm6ubb75ZPXv2VMeOHRv8cD755JO1yy67aOjQoZo8ebKeeOIJXXLJJZGnVCxfvlwvvvii6urqdM455+jmm29uMKrj6quvTuoAqa6u1tVXX63vv/9e/fv310svvaS+ffsmtnnsscdq0KBBOuuss/T666/rrbfe0kEHHRRpf6KaMWOGPvjgA0nSgAEDEh1HtbW1OuecczR8+HDl5ubq/PPP10033dRgdPUZZ5yhs846S0899ZSGDx+uTTfdVLfcckuDNvviiy80depU5ebm6pFHHtGQIUMa/L2kpCQxQiSVWCymAw88UHV1dRoxYoQ+/PBDZWVl6eSTTw7uWBowYIAGDBigTz75RI899pjOOeecpCpAkvTSSy9pwYIFys3N1bnnnpvY7/rzNmnSJPXr10/Dhw9POm877bSTzjzzTL3xxhsaMWKEDjnkkMR6J06cqG+++UaZmZm67777dNRRRzVok+XLl6+VXC6RO1GsobwhCS2jJsS0lmvqHCdryL03zNkait7U/bSSq1rbsS5q67WSfT6sdVpDyUMyzi9fvjwplp+fnxTbZpttzHVaiY4qKiqSYkuWLEmKecPgrXWWl5cnxax991hTLKxrxDpH3rVkxa2pKtZy3rVkbZ9h9gAQzvsu9D5TvWlv6UgEHlrxxOPdHIdWQgmd2phq6l9T1xF6Pjwh5ynV+q24d7/iJZzcZJNNzLiVZF+SfvjhBzO+YMECM+7d/4ScJyns+gtJsp8KyfKb15tvvqnBgwe7f+/Ro4eefPLJxGfJwIEDzesgIyNDp5xyiv7xj39o9OjReuGFF3ThhRdGKnwRj8f15ptvJqpI/e53v0t6f/7yt0Y8Htfo0aP13nvvKT8/X48//niDH+LSquv1lFNO0QsvvKBXXnlFd955p4YMGeIW6QgRj8c1d+5cnXnmmVq8eLFyc3N11llnJf42btw4vfrqq5KkE088UTfeeGNSW+Tn5+uBBx7QtGnT9Omnn+rxxx/XsGHDtNFGG0la9Xvg3//+t2pqatSxY0cNHjw4qe2tzovVaerv6OzsbB1zzDH65JNPNGPGDP3000/adtttGywTj8f12muvKR6P61e/+pUGDBiQiH/22Wd67733lJeXpyeeeMI8byeffLJefPFFDR8+XHfffbf22Wcf5eXlqa6uTk899ZSqqqqUn5+vAw88MOl4onQqNQd+fQEAAADAeq4+Saz375tvvknK4+GJxWKJH8tTp06N3LEZi8W05ZZbJjpOnn766dV2nsXjcd19991auXKlBg4cqO233959oL3ffvslOja8PHSpfP3115o8ebJmzZqlmTNnavz48XrmmWe0xx57aOTIkcrKytJBBx2kI488UrFYTPF4XLfeequWLVumrKwsXXTRRW7HTatWrXTuuecqKytLS5Ys0dixYxN/y8jI0NZbb61YLKZly5Zp3LhxLaZT8dhjj1WrVq1UWVmpu+++O2m/5s+fr9GjRysjI0O//vWvE4MA4vG47rrrLpWVlTXqvMViMW277baKxWKqrq7WJ5980mLahOk8AAAAALCe22qrrXT//fe7f8/Ozk5ZEaeiokJVVVWqrq5WVVWVSkpKJK0aUR7y47Zv377abrvt9OWXX+q2227TrFmzdM0116h79+5mB0Rtba0+//xzSatGv1dUVJj7GY/Hteuuu0qSFi9erLlz5wYnmH3nnXe0ww47KCMjQ/F4XLW1taqqqlJtba169+6tSy65RKeffrry8vIkrRqF9d1330mS+vXrpy233NJddywW02677abc3FyVlpbqySef1MEHH6ysrCzFYjEdcsgh+stf/qJly5bpyCOP1Pnnn68zzjhDbdu2TXt+lxCdO3fWrrvuqnfeeUcjR45UVVVV4jzVjzYpKSlRQUGBjj322ERHSch5q09Yu3jxYs2ZM0ft27dXLBbTvvvuqy5dumjBggU69dRT9bvf/U7Dhg1Tu3btUhZ4aG50ogBoUUKHXKeSrqoljanO473Gms4m+VVRvGHiqbbvrct7ShRaOUfyh1x78dCqL6meaHnDWUOmFUr+dZDquOuHH0fVmAo5odd66HWe6rptzP4CANYNW265pVvJzhKPx1VWVqY333xTf//73zV//nwVFxdr2bJlDabSh04Vy8/P17333quTTjpJM2fO1KOPPqoXX3xRW2+9ta666ioNGTKkwXSYhQsXat68eZKkN954Q+PGjXPXXf89HY/H9eGHH2qLLbYI+l7t0KGD+vTpoyVLligjI0Ndu3bV5ptvrm222UbHH3+82rdv3+A7MR6Pa8aMGZJWTdVb3bZ69OihNm3aqLS0VAsXLmzQdv369dPVV1+tm2++WXPmzNFVV12le+65R3vttZeuuOIKbbXVVsH3COkYuZGVlaVzzz1Xo0aN0vz58zV27Fjttttuklad+4cffljV1dXadddd1aNHj8TrFi1apLlz50padd6+/fZbdxs/P28ffPBB4lh79uypG2+8UVdddZUWLFigm266Sf/617+022676aqrrmrWktap0IkCAAAAAEioq6vT8OHDdemll2rWrFnKzc1NjCA56qijlJWVpQceeEBjxowJXncsFtNOO+2kTz/9VPfcc4+eeuopzZ49Wx9//LGOOOIIHXzwwXriiScSCUOnTZuWeO1PP/2kn376KdJ26keLhDjttNN08803u/ttqc9nFCUnTGZmZmK5Xz4wisViuvTSS3XQQQfp6quv1ocffqh58+bp6aef1ssvv6y//OUvOu+884JGpTQ1J0r9OnbeeWe1bdtWCxcu1FtvvaVdd91VsVhMS5cu1SeffKKcnBwNGzaswet+ft5mzJiR6GxanZ/nxInFYjr99NM1ePBg/elPf9K7776rhQsX6qWXXtKIESN0xRVX6Kqrrlrjo1Iiby0kQZrFWjbq65vag2Y90Qx5imrFoiYNlaTKyspIr7diIReE9TQ5Jycn0nLSqhJSvxQ1iay1nCSz3JmVRHb27NlJsYULF5rrtDIwv/K/ZE4/d8rJJyfFvJ7y0tLSpNj06dOTYtaHttee3nC1X7J6T70PPGv/0/HhCAAAAEj/P1Ho0KFDtWzZMu25556699571adPH2VlZSXucWfOnNmoThRp1f1rly5ddMMNN+jqq6/Wiy++qPvuu09jx47V8OHDdfnll+vee+9VZmZmg3vqp556Soccckik+9/8/PxGJegOfU2bNm1UXFxs/sb5pRUrViSSP7dr1y7pd0AsFtMWW2yh559/XsuXL9cdd9yhJ598UjNnztSVV16pzp076/jjj1/j9/9dunTRAQccoMcff1zPP/+8rrjiCrVq1SqRJHjjjTfWnnvu2WC/fn7ennjiCR122GGNOm+xWEybbbaZnnjiiUTZ5scee0zTpk3TTTfdpE6dOunss89eo23CSBQAAID/8W7CQivrWB3s3tNDLx5atcd78JKuRHzegwjrWL19CZ3qGDpMO6QCYarlrQdgkj010ZsG5+Vi8NqmsLDQjHuVGidOnGjG58yZY8a96j9eG1i5KUKnhXrnz3vwGFp1Cc2jpqZG119/vZYuXaqtt95azzzzjLp06dJgmXR9rmRkZKigoECnnHKKjjrqKO2///76+OOP9dJLL+nGG29U+/bt1a9fP2VlZam6ulpfffWVTjrppBbzEDEjI0ObbbaZxowZo3Hjxqm0tDRlxZgffvhB5eXlisVi2mWXXdzP/6ysLLVv31433nijTj75ZO25555avHix7r//fh1//PGR9y9d5ykWi+ncc8/VM888o6lTp2rixInafvvt9fzzz0uSDj74YLVv377Ba/r166fs7GxVVVXp66+/1imnnNKk85aVlaU2bdro6quv1q9//WvttNNOmj9/vh544AGdeeaZazRvDJOcAQAAAACSVk29+OGHHxSPx3XmmWeqc+fO5nKLFy9O63brE5NKq0ak13datm3bVgMHDpQkvffee26etbUhIyNDBx54oDIzM7V8+fJEqV9LbW2t/vGPf6iystIt2WvZfPPNNWjQIEmrKiE1Rjweb3K7bbXVVtpyyy1VU1Ojxx57TPPnz9eXX36prKwsnXbaaUnH0qZNm8R5e//999N63nr06JEo1/3jjz+mbb1R0YkCAAAAAJC0asRVfUdAfWfKLy1dulSvGtPpo/JSKNSPGissLEyMLMjMzNTFF1+snJwcjR8/Xnfeeac7AmxNi8ViOuOMM9SxY0fV1dXpmmuuMdssHo9r7Nixeu655xSPx7XzzjsnpUhINWqk/m8dOnQI2rc99thDsVhMtbW1Gj9+fMCRJcvPz9cxxxyjjIwMffjhh3r33Xe1aNEibbHFFtp2222Tls/MzNQll1yi3NxcjR8/XnfccUfweYvH46sdYfjLETBrAtN5ALQo3pBr70PXGm68utd4w/285UMr0Uj+kGRviLgX94Zfp+K14c8z6UdZPtWwyNDhod7xedtO9bTCyvUk+fu7+eabm3FviLyVy6lefRnDX7LyOknhU0NS/c2Le8fttW2qKgqpnp4BADYMvXr1Uvfu3TVlyhQ9+eSTGjRokI444ghlZmaqpqZGs2fP1m9+8xstWLCgUeufMWOGnnnmGZ155pnKz89XZmamamtrNXHiRN17772KxWIaMGBAIg9iLBbTYYcdpt13310jR47Utddeq4kTJ+qSSy7RZpttpuzs7EQHTFVVlSZMmKD+/fsHdTg0xUYbbaQHH3xQJ554on766ScdffTRevDBBzVw4MDENKQxY8bo17/+tZYvX66ePXvqb3/7W4OpffF4XG+88Ybi8bj23HNP5eTkKCMjQ9XV1frPf/6jUaNGKTMzU/vtt1/k/YrFYho4cKDy8vJUUVGh66+/Xg8++GCifLB3H5RqfYcffrhuuOEG/fDDD7r66qtVV1en3/72t26Ox0MPPVS777673n//fV133XWaNGlSyvPWr18/dezYMdEmH374oRYsWKADDzww0SY1NTV6/fXX9dZbbykjI0NDhgxZ49O70t6JEpIQ02LdwDW1Uaybv5Ab26jb9+a4WheV9QMrakyyf5BYPzqsrNTej5mVK1cmxaz5vL17906KeT9kfzl/UrJ/bFhzY72bdusH1F133pkUe+rii83XR3XIwQcnxebPn58U8+Zxr6k3M6VHAQAAkC4FBQW64oordOmll6q4uFhnnHGG7rrrLhUWFqqkpERTp05V586ddfHFF+uee+7RihUrIne2x+Nx3X///brtttt01113qVevXmrdurVWrFihH374QSUlJerQoYNuuummBr9jCgoK9O9//1snnXSSPvnkEz355JN6+eWX1bt3b3Xq1El1dXVavny55s2bp6VLl2rkyJFrrBOlvnPhoYce0oUXXqjvvvtOBx54oDbddFO1b99eCxYs0LRp01RbW6t+/frpvvvu03bbbddgHdXV1brxxhs1duxY9ezZU927d1dubq6WLFmi77//XjU1Ndphhx10+eWXB/3G6NWrl/r27atvv/1Wb775pnbeeWd17NhRG2+8sYYPHx78e6Vfv37abrvtNHr0aM2ePVudO3fWkUce6a4nPz8/cd4+/vjjlOetuLhY77//fqITpa6uTn/+8581atQo9ejRQxtttJHy8vJUXFysKVOmqKKiQltssYWuvfbaNf57iJEoAAAAAABJqzoFTjvtNG222Wa6+uqrNXnyZH3xxRfKy8tT7969dd555+n8889XPB7Xv/71L61YsUIjR47UYYcdFmn9Bx10kL755htNmzZN3377rSorK1VUVKTu3bvrhBNO0IUXXqh+/fol/TDv2rWrRowYoVdeeUUPPfSQpk2bpmnTpmn8+PEqLCxU27ZttdFGG+n000/Xxhtv3Awt48vIyNCvf/1rbbvttnrwwQf1/vvva9q0afruu+/UuXNnbbvttjr33HN1zDHHqKCgIOnYMjMzdeqpp6qurk5z587V6NGjFYvF1LZt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yEhLVbbPP/9c++67r2pqavTuu+9qyJAhTV5nc/llG0Vtg7q6OsXjccViMff+a0OxIbXF+n10AAAAALABe/3111VYWKhWrVqt9t9GG22kmTNnru1dXuPKy8sTbdCrVy9Nnz490usuvvhitWrVSmeeeWYz72HLVl1drbPOOksdO3bUKaecEpwUfF3DSBQAALDBCc0nFTqyJyTHmzfCydum94TPu2kNrYTixb1RT9by3jat/G2p1u2dJ2+EmZenzKvO441g89rSantvlFjovnjn1RstOH/+fDO+YsUKM56OkWYh13sqG1QVnuVPNd+6M9tKBftLMfsarFdbW6uqqirV1dUpNzfXvWalVe+tdIxCWRfV542cP3++rrvuOj388MMp20pa9VlRWVm5Xnca1NXVaebMmRoxYoSOO+44tW/fPmmZlStX6plnnlFZWZlee+01TZ8+XX379l0Le7tmNKkTxfoCC/kCtz5ArS8Q74vS0q5du6TY3nvvnRTzTmqfPn2SYtZwbOtL17sJst581rKtW7dOillJaSWptLQ0KWa1sXWz4g0vt/YzaiLUkJtL6xxbw/O9/bS2VVxcnBQrKSlJinkfhNZ+WtedNWTfu0mybmKs8+5dN5aQG1UAAACsZUsua751Z/eT8vdabSfKz/35z3/WwQcf7P49MzNTXbt2TcferZNisZji8bj++9//6ne/+5323HPPDbZTqd6IESN0+OGHq7a2Vvvvv7/ZiZKdna2NN95YEydOVOfOnd3y8esLRqIAAAAAQLNoWQ+79tprL2255ZZrezdarIKCArVv315z5szR2WefrY8//titlrqhqKqqckcL1svPz9fIkSP1xRdfaPfddzcrr65PyIkCAAAAANjg5eXlaejQocrPz9fUqVP14IMPbljTzxopFoupU6dOOuigg9S6dev1fvQOI1EAtCjpyDtQL7Q6jzcfvaqqKmifJH/qWGilGG/bkj990psi5sW9dkp10xCSG6Ex6uclW0JyFUjhFZEaU53Hy6vgPYlZuXKluw2vbRtToSpkPRLTAwEAyeLxuCoqKrRy5cpEbpXMzEzl5eWpsLAwKPWCte6VK1eqvLxcVVVVys7OVk5OjgoLC1NOea+rq1NpaanKy8tVU1OjWCymgoICFRUVBU2Vt5x00kmaMWOGHn74Yd12223aY489NHjw4CatMx6Pq6ysTCtXrkzcZxQUFKiwsHC1eVfqrVy5MnEOsrOzlZubq6KiIsViMZWXl6u4uFgZGRnq0qWL+V1fVVWlsrIyVVZWqra2VhkZGcrNzVVhYaGZnqCkpERlZWX68ssvE7FvvvmmwbIdOnRQXl6e4vG4Fi1apOrqamVlZalz586J+5OlS5dq5cqVisVi6tKlS8rzU1tbqwULFigej6ugoMBM1VFdXa3S0lJVVFSorq5OWVlZKiwsVEFBwWrviepfW1VVpXg8ruzsbBUUFCgvLy/ofopOFAAAsMFJVwn0kAS1oR1e3rq9jjCv89FbT2M6UKOux1uHt00vGaqXhNXLR1ZQUBAU9zoOvba0Ora9dXhxrxPV68CdO3euGX///ffN+E8//WTGvevPO1chnaqhP6JDS7Nj7YjH45oxY4ZGjBihxx57TDNmzFBJSYkqKirUqlUrdenSRbvssovuvvtutW/fPvj8VVRU6D//+Y/uuusuzZ8/X0uXLlVRUZHatWunvfbaS9dee6022mijpH0qLy/XzTffrBdeeEGzZ8/WihUrlJmZqV69emnffffVLbfc0ujREPF4XHl5efrDH/6gESNGaO7cubrhhhu00047KS8vL3h90qr39r333qsnn3wy0YaxWEw9evTQoEGDdN999zXodPilmpoavfzyy7rjjjs0depULVmyRG3atFHXrl01dOhQDR06VC+//LJOPvlkbb755vriiy8a5CQpLi7WO++8o4cffliTJ0/WkiVLVFZWpry8PHXq1En9+/fXPffco379+jXYhz/+8Y+6//77G+zLUUcd1eD/X3nlFR166KGqrKzUoYceqjFjxqh///6aOHFiYplHHnlEl112mbKysvTss8/qyCOPNI81Ho/rrbfe0hFHHKGamhrdeuutuvTSSxv8fdq0abrooos0YcIEzZs3T1VVVSoqKlKfPn103nnn6fTTTze/I+PxuMaMGaM77rhDY8aM0eLFixWPx9WmTRv17t1bf/rTn7T//vtHvmboRAEAAAAAJLnmmmv09NNPq7CwUL/61a+0ww47qKqqSrNmzdLkyZM1ffp0fffddxoxYoS6dOkSeb2VlZU65phjNGLECGVlZal///7acccdtXDhQv3444966623dMsttzR4TTwe18SJE3XKKafo22+/VevWrTVw4EAVFRWpuLhY48eP10MPPaR33nlHI0aM0Oabbx58vEuXLlVlZaX69Omj3/72t7rpppv00Ucf6cUXX9SJJ54Y3DEzc+ZM/fa3v9WHH36ovLw8bbvttmrbtq3Kyso0btw4vfDCC/r444/1n//8xxztUlVVpfPOO0+PPvqo6urq1L17dw0ePFiZmZmaMmWKLr/8cr300kvq16+fpFUjoX/ZifDcc8/p/PPPV3Z2tvr27asBAwYoHo9rzpw5+v777zV79mzts88+euWVVzRw4MDEMW611VY65JBDNHv2bH3zzTeSpIEDBzbo2Ipyzo866ijdcMMNWrZsmR5//HEdeeSR7rJPPvmkqqur1blzZx1zzDGJeF1dne69917deOONWrJkiTbddFPtvffeisVimjlzpsaPH69zzjlH77//vh599NEGHfDxeFyvvPKKTj75ZJWXl6tbt27aZZddVFtbq1mzZmns2LFasGDBmhuJYvXyhGzc6uG2YiFD03v16pUUGzJkSFJss802M9dpVcOxnoJErYQj2W1i7bvVuxky9N96amI9MfHWGfUpgrVt78mS9VTFag+rOo+XxMk6Jms7y5cvT4p5T1WsJyLWU66OHTsmxbxe6ahPcFINrY+yTobfAwAAoDlcdNFF2njjjfWb3/xGPXv2VGZmpuLxuKqqqnT77bfrlltu0TfffKMbbrhB9957b+TfgqNGjdLbb7+trKwsXXnllbr00kuVl5eXKMf87rvvJv0uW7lypYYOHapvv/1Wm266qZ5//nltscUWysjIUG1trcaPH6+jjjpK06dP15VXXql///vf7mg2T/19dSwWS6xj+vTpuuSSS7Tzzjtr0003jbyumpoanXPOOfrwww/VsWNHPfXUU9pzzz2VkZGhuro6/fTTTzruuOP07bff6qqrrtKbb77ZoFprbW2trrjiCj3++OPKyMjQiSeeqL/97W+J3yNLlizRfffdpzvuuEPffvutux/HHnusxo4dq7POOksDBgxI/OarqanR66+/rqFDh2rOnDkaOnSoxowZk/idOnToUJ1xxhl65plndOqpp0qS/vnPf2qbbbZJrDvK1KmePXtq77331vDhw/XJJ59o3rx56t69e9Jyy5Yt0wcffKBYLKa999470VkTj8f1xRdf6M9//rOWL1+uU089VbfffntitFF1dbXuuusuXX/99XrxxRe1//7769RTT01cixUVFbryyitVVlamHXfcUf/5z3/Us2fPRBt8++23wRWpSCwLAAAAABuAl19+WR9//LH7b/bs2YllY7GYtttuO/35z3/WZpttptzcXGVlZSk7O1utWrXSVVddpRNOOEGxWEyvvPKKlixZEmkf6urq9Oqrr6qmpka9evXSVVddlcitUp/n48gjj0zKFfL3v/9dn332mTp16qT//Oc/2mabbZSTk5N43Q477KCnn35aOTk5eu211/T11183qa3y8/N12223KT8/XwsXLtTNN9+82io1P/fmm29qxIgRatWqlR599FENGTIksb85OTnq27evXnjhBeXl5WnMmDEaMWJEg4ejo0aN0j333KPa2lodeOCBeuihh9StWzdlZ2crOztbXbt21fXXX6+jjjrKnRIpSe3bt9c///lP7bjjjsrLy1NWVpaysrKUl5eno446Stdff72ysrI0YcIEjR8/PvG6zMxMZWVlNcjv1r59+8Trs7KyInWaZWVladiwYcrOztayZcs0duxYc7lvvvlGxcXFys3N1QUXXJDo7KmqqtKwYcO0dOlS7bnnnvr73/+uDh06KDs7W1lZWcrPz9fvf/97nXPOOaqqqtKtt97aYHDBtGnT9P3330uSbrvtNm266aaJNszPz9dOO+2k3r17r/Y4fo5OFAAAAADYAPzlL3/RHnvsYf7bc8899cwzzzRYPhaLuT+Us7KydPDBBysWi2np0qVauHBhpH2oq6vT3LlzE8lWy8rKVvua0tJSPfLII4rFYrr00ku13Xbbmfu1/fbba4sttlBlZaUefvjhJo3YjsViOuSQQxKzGp555hk999xzkdZZWVmpe++9V/F4XMccc4wOOOAAc3833nhj7bLLLqqpqdGDDz6YWHdNTY1uv/12xeNxdenSRXfffbeZxD4zM1PXXXedmYD158fhncNYLKb99ttPhYWFqq2tbZDLJJ223nprdezYUbW1tfrXv/6VNIugtrZWjz32mKqrq9WtWzcNGDAg8bdRo0bpq6++UlFRkR566CFzFkBmZqZOPPFE5ebmJqaY1Zs3b16iXX/88ce0jOInJwqAdYI3ZSzVB2FocsTQxHiptu19WXnJEL3hkKm24U0h9CrFhFavKS8vd7cdWk0oaub51a0/1d9CE4I2pjqPdx0uXbrUjFtTFSX/OpD88+odt3devX1NNbS5uasuAQDWrgEDBqTMFbLJJpukfP0v70u6dOmSqA6TajTEz2VlZen444/X8OHDtWjRIt1000269NJLUyZXnT17tubMmaOMjAzttttu5r5Iq77j9t9/f3399deJPB5NkZOTo/vuu08ff/yxSkpK9Ne//lWHHHJIg2k3lmXLlum7775TPB7XXnvt5e5vRkaGjjvuOL3//vsaP358Ypmfv36HHXYwU1bU23TTTbXxxhtr8eLFkY7pl/vRunVr5ebmatmyZVqwYEGkdYRq27at9t13Xz3++OP67LPPtHLlygbJb8vLy/XRRx9Jko488sgGU7lGjhyp6upqbbnllurSpYt7b7zVVlupsLBQxcXFmjNnjrbffntJ0q677qpu3bpp/vz5uuWWWzRgwIBE7pfGJrOmEwUAAOB/Qsush5Rfb0xnaTqW9zrH0rVdKyeb1xkYWqrb64D1OiJDy8uHnlero9jrsCwtLTXj3g/N4uJiMz5lyhQz/uOPPwatP/R8h/y4CP0hkuqpOJrXvffeqz322MP9u1c1pby8XJ988ok+//xzTZ06VQsWLND8+fM1f/581dXVKR6PB1UrO+CAA7Tjjjvqiy++0B133KGnnnpK+++/v373u99p0KBBSe/xSZMmafny5crIyNAbb7yRMgfIxx9/LGlVpaolS5aYOQ1D9OrVS7///e917bXXauLEiXrkkUc0bNiwlNfrrFmzNH/+fEnSp59+6n4eSNJbb70laVXHydSpU9WvXz+tXLky8YCmPo+KJyMjQ23btl3tcVRUVGjSpEl65513NG3aNM2bN09z5sxRcXFxolqNV5msqWKxmH7zm9/oueee0+LFi/Xvf/9b55xzTqIN3377bf30008qKirSpZdemojH43GNHj1a0qqcOP/85z/dh4XV1dUqKytTXV2dnn/+eR188MHKzMxUQUGBrrzySl111VWaPHmy9txzT+244446/vjjdcIJJ6ht27bBnz1N6kSxntZ5J9h6iuWVH4oSk+wv0F122SUp9svSWJLc3sOfz/mqZ930WMcT8pQwajJR7w1nxa3eR6vtvGOPuk/WOr03nPUk2/qAtdrduxGyXm/dHFlvBq89rZu9qNeC90ZuCm4uAAAAkG4FBQVBRQ2qqqr06quv6oYbbtCkSZMUj8eVlZWlVq1aKTc3N9JUHEthYaFefPFF3XjjjXrssce0YMECPfbYY3ruuee0zz776B//+EdilEtdXZ3eeuutREfNX/7yl0jbqKurC8ph4onFYjrnnHP0+OOPa/Lkybrlllt08sknq1OnTsrNzU26P4/H43r//fcTvw0feOCByNuq76itrKxMdIhG6SBJpa6uTh9//LGuv/56jRkzRhUVFcrOzlZeXp4KCgpUXl6+RgpVDBo0SH379tW3336rESNG6JxzzpG0qr1ee+01xeNxDRw4UO3bt0+8prS0VNOnT5e0qkP5kksuibStn/8GjcViOvfcc1VQUKBbb71VP/74o0aNGqVRo0bpvvvu0/XXX6+jjz56zVXnAQAAAACsfyorK3Xqqafq5ZdfVkZGhg477DANHTpUvXr10iabbKKcnBx9+umn2nPPPYNGoUirfth269ZN9913n4YNG6b33ntPd9xxh6ZPn65XX31VP/74o95880316NFD0v//UZydna2bb75ZBQUFq91GXl5egx/kTdG2bVs99NBDOvDAA7VgwQJdeumleuyxx9yqLj/vXLruuusilQLOyMjQxhtvnBRvSkdQXV2dbr75Zt10002qrq7Wdtttpz/84Q+JKUCFhYWaN2+ett9++8TImeZSUFCgI488UuPHj9fo0aM1a9Ys9erVS0uXLtWIESOUmZmpCy+8sEHOk+rq6kRn1KBBg/Tb3/420rb69evXoLMwMzNTp59+uo477jh9/PHHeuihh/T2229r0qRJOuWUU7RixQqddtppkTtS6EQBAAAAACTE43G98cYbGj58uGKxmC655BL98Y9/TErqaSX5DBGLxdS3b19tvvnmOuWUU3TTTTfptttu04QJE3THHXfo9ttvVywW00YbbaRYLKaMjAydcsop6ty5c5O22xi77rqrDjvsMD333HN65ZVXNGnSJHcmQs+ePRWLxRSPx3XUUUc1SJQaRW5urlq3bq2SkhLNmDEj5bLxeNztaJkyZYruvPNOrVy5Uscff7zuv//+pI4lazRNc4jFYjrhhBN06623avny5Zo4caJ69uyp8ePHq7i4WK1atdKuu+7a4DWtWrVKjPrv2bOnhg4dGqmssrf9oqIiHXjggRoyZIi+/PJLHXfccZo9e7ZuuukmHXHEESkT9P4c1XkAAAAAAAnV1dW65557VF1drU033VTXXHON2WESOgLFU/8D909/+pO23HJLSUokGo3FYjr66KOVl5enmpoaffHFF2nZZqisrCw98MAD6tmzp5YvX64///nPmjp1atJysVhM+++/fyKFwrvvvhu8rcLCQnXq1EmS9OKLL6bMqbJ48WJNnjw5KR6Px3X33XdryZIlyszM1J133mmOzKnPabMm9O3bV4MGDVJNTY1uvfVWlZWV6YEHHlBVVZUOOOCApBE7ubm5iRw+48aNi5y8eHVycnK0yy676OKLL5YkzZw5U8uXL4/8ejpRAAAAAAAJ1dXVKi4uVjweV+vWrc1clPF4XJ999llaf4BnZmYmOg9+PrqiT58+6t27t+rq6nTXXXcF/eBNp7Zt2+ryyy9XVlaW3n77bc2ZM8dcrmPHjokyzI888ogWLFgQ1E5t27bVkUceqVgsptmzZ+uZZ55xc4c+/vjjWrJkifm3OXPmKB6Pu8ln4/G4vv/++5SdEz9/3ahRo5p8vk844QRlZGTo22+/1dy5czV69GgVFBTo6quvNpc/6qijlJ2drRkzZuiRRx5Ja8XAnj17SgrvSIo8nWdN9U6FJJa1SkduttlmSTErQagVk9SgnFI960RZiVS9zO/W8Cqr19ZK1Lts2TJznYsWLUqKWclRf146ql6q8pZR9slqD6+sqbVP1vattvPKjFptb23fWs5703Xo0CEpZiWMrU9sFGU/m5o42WLt/4aSbDa0Ykaqv4UkwE617VQf4t42QuOphiymKsVr8apZeJ9dqZ4uhW47tAJGqm177e69xouHfG7V85Joe+3hJZ5ONZfbuzFM100D5YpXCX3PeUOlvc8Ha/1ewvSQ7xHJf9+E3IekWk/o94r1nvEqzYQk9pf8e5amTiFYHe86sN4/Xvt67+W5c+eacW/I/pdffmnGrR9NUvjIgJBrOF1C2hdrR1ZWVqJqyaRJk/Thhx9q8ODBDaqmvPvuu7rhhhsa9Ttx0aJFKiwsbPA9GY/H9eOPP2ry5MmKxWLaYYcdEn9r27atzj33XA0bNkwjR47Ur3/9az344IPq1q2bmdi1rKxMrVq1Svt9ciwW029/+1s9/fTT+vTTTzVy5Ehzuby8PF1++eUaNWqUJk6cqKOOOkqPP/64+vTpY+5veXm58vLyEu+7WCym4447Tg888IDKysp0ww03aOedd9ZWW23V4BzUVzfyvkfq26empkaPPPJIg4o49e19+umna+XKle4xDxo0SHl5eaqoqNAzzzyjk046yf0+W51YLKYjjjhCN9xwg+bMmaPf//73mjNnjgYMGKBNNtnEPF/77ruvBg0apNGjR+vaa69VUVGRTjrpJLMvoK6uThUVFQ3us2prazV79mz16tWrwfqrq6v1xhtvKBaLqXv37mY/gIecKAAAAACAhJycHF1++eX68ssvtWLFCp144ok6/fTTtcUWW6ikpERjxozR66+/ri222EJfffVVUJWe+oS1c+fO1X777afNN99cubm5mjlzph5++GHNnj1b3bt31xlnnNHgR++ZZ56p77//Xg8//LBee+01jR07NvEDu02bNiorK9OCBQs0btw4VVVV6bnnnmuWDteCggLdd999Gjx4cMoRHPvtt5/++Mc/6rbbbtOnn36q3XbbTYMHD9Zuu+2mjh07qqKiQgsXLtSECRM0e/ZsDR8+vEFOjoEDB+qWW27RlVdeqdmzZ2uvvfbS4Ycfrl133VXxeFyjRo3S66+/rq222krl5eUqKSlpsP2MjAxdeumlev311zV37lxdffXV+uqrrzR48GBVVFTom2++0euvv65OnTqpc+fOWrBggXkcWVlZ2nbbbfX555/r/fff1yGHHKLdd99dlZWV+tOf/uQ+pPN06NBBu+++u5599lm98cYbkqTf/OY3ZqeItOoBxFNPPaVDDz1UEydO1AUXXKB7771XhxxyiPr27avs7GwtWbJEs2fP1ieffKLjjz9eF1xwQeLaefbZZ3XhhRfqgAMO0MCBA9W1a1cVFxfr7bff1ttvv63MzEydeOKJkfOhSHSiAAAAAAB+JhaL6YADDtDll1+uu+++W4sWLdJf//pXSat+nOfl5enss8/WhRdeqIMPPlgTJkzQZ599pl122WW1oz9qamq0bNkyTZo0Sd99911iBFIsFlNmZqb69++vu+++W4MGDWrwutzcXN15553q06ePHnzwQc2YMUNPPfWUnnjiicTrMzIylJGRoR122KFZRzZtu+22Ov744/Xwww+7I3EyMzN1zTXXaPPNN9fNN9+sH374QS+++KL++9//Jva3/pj79OmTNJokIyNDZ599tvLy8nTddddp3rx5evTRR/Xoo48qFospKytLJ510km6//XYdeOCBGjNmTFLbb7755rrjjjt06aWXav78+XrkkUf0yCOPJF5/5JFH6uabb9Yf//hH/fvf/9aECRNUW1vbYLRYdna27rrrLh155JFauHCh3nnnHb3zzjvKyMjQVVddFdyJUl8p57nnnlN1dbXy8/N1wAEHuNdNLBbTxhtvrDfffFPXXHONXnrppcS1U9/2GRkZisViys7O1n777dfg9fPmzVN5ebmeffZZPf3004rH44l2Lyws1CmnnKLrrrsuKGEtnSgAAAAAsJ7acsstdcsttygejydKBkeRlZWlP/3pTzr99NP12WefadasWYrFYurZs6d22GEH9e7dW5J01VVXafbs2erXr1+D1/fp00c333yz6urqGqRcKCgo0DvvvKOvv/5as2bN0uzZs5WZmakOHTqof//+2nbbbZWTk2P+qM7JydHFF1+sM888U19//bXmzJmjefPmKR6Pq0OHDmrfvr169+7dYNpLFNnZ2frb3/4mSZHKIsdiMd1+++3abrvtVFpaqq222spcLjMzUyeddJKOPvpojRs3TrNmzdKcOXNUXV2tDh06qF27durZs6e22WYb80d8RkaGfvvb3+rYY4/Vp59+qh9++EGVlZXq1KmTtt56a2211VbKzMxMTJVs3bp1g6k2sVhMxx57rPbbbz999NFH+umnn1RdXa1OnTppu+22U//+/ZWRkaGhQ4dqm222Ubdu3ZI6hWKxmAYNGqQvvvhCX3zxhebMmaOMjAx169YtMeUyKytL559/vubPnx+p/fbee2/dcccdqqqqUteuXdW/f//VvqZHjx565JFHdN1112nSpEmaM2eOli5dqtzcXHXs2DHRJp06dWpw7i+66CIdfPDBmjJlimbOnKny8nIVFhaqZ8+e2nHHHdW5c+fgaV90ogAAAADAemqzzTbTZZdd1qjX1nea1CfgtJx44olmvGfPnrr00kvNdbZq1Uq77757o/epsLAwUbUlHbKzs3X55ZcHvaZ169Y655xzVrtcLBZTXl6edtppJ+20007B+1ZfuWi//fZLGmUhSStXrkx0cO20005JuaRisZjatm2rQw891N3G4MGDNXjw4JT7sNFGG2mjjTYy/56VlaVf//rXEY9oVefSsGHDIi//8/3o3bt3ogMv6rb69+8fqaMmqiZ1oli9ZSHJy5qarNZK/tK1a9ekmDXEyEtsZiX7sxLtpEq+80tWm1jJCa11/vjjj+Y6582blxTr1q1bUuyXZaIkP/Fc1AS61nn32sM6di95XNR1Wonaop4jL0ma9cVgJWabMGFCpP3xthV1WKG3nBUP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\n",
      "text/plain": [
       "<Figure size 1400x800 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 创建图形对象\n",
    "fig = figure(0, (14, 8))\n",
    "\n",
    "# 在训练数据上测试逻辑规则\n",
    "testLogicalRules(trainingExampleIndices, data, fig, trainX, trainY, rule)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Confusion Matrix:\n",
      "[[ 226  115]\n",
      " [ 102 4431]]\n",
      "Recall (TPR) = 0.663 (Portion of fingers that we \"caught\")\n",
      "Precision (PPV) = 0.689(Portion of predicted finger pixels that were actually finger pixels)\n",
      "Accuracy = 0.955\n"
     ]
    },
    {
     "data": {
      "image/png": "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eh5++GFcd911SE9PR//+/fPNX3IhXdfF166EmJgYf5Tzli1b8PTTT19U+ciLpZ4xYwYcDgfat2+PO+64I9/rZ8+evehHv67r2LlzJ7KysuByuVCpUiVT+9a+fXt/eME333xjKQE4j6ZpGDBgAEqWLIm4uDi8+eabOHjwIKpXr55vbprz9evXD9dddx0yMjIsXTefz4e0tLSLzovP58OmTZsAANHR0QgJCbF8XIFS4DE10kCvwqqZWalZShetYUPjuL8tW7aK63r77beM9+u558VlJkz4yLD88cefMCxv3ry5uC4p0jmvH+nVIqXrqEhpVdI1Vn0ASK+pErHMfqBYufes/F1YSVS5nA/Hoko6Juk6WDlvZtPPzN6zgJzENWfObMPy0qWFLxnFQ8Q1q42XWbDgJ8PykiXnGJYXL17csLxcuXLitvO6s1zo1ttuE5cx4+elS8XXji0wTpCTfpCZTSyz0ufc7HdkIFP7JFaSzIrS03cKnDp16uC2227DvHnzsGvXLtxxxx144oknEBkZie3bt+P777/HsWPH0K9fP3z22WeG6wgLC8P48eNx//3349ixY7jrrrvQsWNH9OrVCzExMXA6nUhOTsaJEyewdu1aNG/eHN27dy+U43M6nXj55ZexceNGrFy5EtOnT8fhw4fxxBNPoGLFikhOTsby5csxfvx4ZGVloVq1apgwYUK+pLTExETcdtttuOeee9C2bVuUKlUKubm52LZtG1588UVkZmb6Kw9muN1uVK1aFfv378fcuXNRsWJFtGvXDl6vFx06dDD9WRAdHY3atWtj/fr1mDp1KnRdR/fu3cVEyrCwMHz00Ue47777EB8fr7xu69atQ9OmTXHffff5l1++fDleeOEFDB06FLVr10bx4sVx9uxZLFy4EF988QUcDgfatWuHyMhIU8dxJTAogIiIiOhfzOl04p133sGhQ4ewdetW7Nu3D48//jiAcxXZKlWqYObMmWjWrBlmzJhh2H1L0zS0b98eCxYswPDhw/HHH39g1qxZmD17tr9Sr+s6fD4ffD4fXnrpJdx7772FFijgdruxYMECjBw5Ep999hl+/vlnLF++HA6Hw98C4Xa7MWjQIDz//POIiYnJt28HDhzA/v378eqrr8LpdPqXyzue66+/Hl9++SVKlSplar88Hg9eeeUVPProo0hNTcXYsWMxbtw4AOcexJit1Ljdbjz22GNYv3490tLS4Ha70aVLF+VDmltuuQULFizAc889h40bNyqv26hRo9C9e3d/XPTKlSuxdetWDBgwAE6n01+em5sLl8uFjh074pNPPglIpPjlYqWGiIiIqIiIjo7Gf/7zH4SGhirTpFwuF1q0aIHKlSsXKI2ratWqWLduHb788kusXr0ap06dQsmSJdG8eXM88sgjiIqKQlpaGjp27IjExETExcVdNKGnpmlo2bIlfvnlFyxfvhwbNmzAwYMHceLECYSGhqJ8+fKIiYnBbbfdhoYNGxa4QuNwONC4cWN4PB5ER0cXaBkjbrcbb7/9NoYMGYLZs2dj27ZtOHXqFEqXLo0GDRrggQceQOXKlQ0rEjfeeCPmzZuHtWvXYs+ePUhISEBoaCiqVq2K1q1b46677kJoaGi+Y9I0zX+cUVFRhvukaRp69OiBsmXLYuHChThw4ACCgoJQtWpVf6upw+FAkyZNEBkZierVq1/yOO+66y506NABWVlZqFWrFho0aKB8f951W7ZsGZYvX47ff/8dBw4cuOR10zQNI0aMQP369bF582bs3bsXqampKFGiBGrVqoW77roLTZo0QXBw8CX3uTCwUkNERETXnBKeslds3ZHBJaDBWgtF586dceeddwJQdzmMjIzE119/fcn35dE0DSEhIXj88cfx2GOP5SvPEx4eju+++065zrz1dO7cGZ07d87XZdFqq4zL5cLHH3/sX9fltO44nU5Ur14dI0aMMLW+oKAg3Hrrrbj11lsLfExOpxMffvjhJbeTN4anffv2hu91u934/PPPC7y/YWFhWLx4cYGPLe99Vq5bREQEevbsiZ49ewbkWl9JrNQQERHRNefVFlOv4No1ODTrWUxmfqgGev1m1xnIH7eB/qF8Jc7P5b4/UOf+cs+VleWLYkXmfKzUEBER0TXH6eBPIKJ/k8tOP1OxkiwjJa8EMoHqxIkThuWDBj0qris6OsOwXEpFA4CICOPT++WXXxiW3367cXIFYC1lrDBICXOqaywl71g5RmkZVf9OKUlOGqxnJclMul9V58XKILusrCzTyxR10meNNEu0KsnJ7DU1m5KlIl0bqVzapzWrV4vbMHv/S/2uT548aVheu3ZtcdtlypQRXwuEjAzjz1wAOHLkiKllrKSAScx+F1r57pQE6ulxINNEiYiKCs5TQ0RERERE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RERERGRzrNQQEREREZGtMf2MiIoUqbud1D0vkJOTmu3OaKXLakpKimG5lH6mUrx4ccNyKdVLSsmS3q9KIJO2LXW7lZLXpK6y0uTFgPmJeqXUMCllTJpsGZCvU1pammG5le6+0jJm78NATlrN9DMiKurYUkNERERERLbGSg0REREREdkaKzVERERERGRrlz2mJpCRyoAct2uF2VnApT77gNxXOzk5WVxGmlE8KMj4tKvioc3O+K3qjy69pur7rVqfEdVs2dK5vK97d8PybEX/dun4VccijXWQ9stKpLKVvwvpvlD1i2fcMxERERFbaoiIiIiIyOZYqSEiIiIiIltjpDMR/WuZjaE1G5lrpZuh1C1V6n6q6sopxSFLzHbXVHU7LVasmKllpEhnqdulqgupFJ8skbYhlUdGRorrkrocS1HdERERhuWqeyc7O9uwXOpuGshYcyIiu2JLDRERERER2RorNUREREREZGuX3f1M1b1DahJXNZWbnc04kLMcq/ZLSkaTZugGzCemSQlngJzYJe2XqsuK2+02tS5A7jIj+XD8ePG1p596yrB8znffGZbf1bmzuK7U1FTDcqlrjIo0i7jUFUT1mnRfqq6xdC9xJm8iIiIiNbbUEBERERGRrbFSQ0REREREtsb0MyKyBbNdU1WvSSlSUhqWlXQpqauh1JVUKldNsCotI3WLlI6jZMmShuVRUVHits1O4iud25CQEMNy1UTMUvqZtA1Vt08jqvQzqWvv8ePHDculhDrV8UndfaVlrEwobRYT1oioqGNLDRERERER2RorNUREREREZGsF7n5WWE3PgZosz8q6rByjla4hUrmUSqZaRuoeopq4TtqONDGfavtWvP/BB4blgwcNMizX4uLEdUnpZx6PR1xGumbSMarOi6oLiRHVPSltx2zXGSIiIqJrDVtqiIiIiIjI1lipISIiIiIiW2P6GRHZmqrbqNlJe6WuiVaS16Rug1IilZSSJU0KC8hdFqV1SUljUtqXqkusdHxmu/FK71cld0nHJ014LKWiSddb1a1U2i+py6t0/VRdeqVlpP2V7kNpX61MgM30MyIq6thSQ0REREREtsZKDRERERER2RorNUREREREZGsFHlNjZcZiK/3Qza5LFXcr9Te3sl9m+9oD5mOQVfHQ0ozfUj9uqQ85IPdHV11Ls9ds0KOPiq9JcdOa0I9d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\n",
      "text/plain": [
       "<Figure size 1400x800 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 创建图形对象\n",
    "fig = figure(0, (14, 8))\n",
    "\n",
    "# 在测试数据上测试逻辑规则\n",
    "testLogicalRules(testingExampleIndices, data, fig, testX, testY, rule)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 但为什么止步于此呢?4像素!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# 导入运算符模块并重命名为op\n",
    "import operator as op\n",
    "\n",
    "# 定义组合数计算函数\n",
    "def ncr(n, r):\n",
    "    # 保证r是n-r和r中的较小值\n",
    "    r = min(r, n - r)\n",
    "    \n",
    "    # 如果r为0，直接返回1\n",
    "    if r == 0:\n",
    "        return 1\n",
    "    \n",
    "    # 计算分子\n",
    "    numer = reduce(op.mul, range(n, n - r, -1))\n",
    "    \n",
    "    # 计算分母\n",
    "    denom = reduce(op.mul, range(1, r + 1))\n",
    "    \n",
    "    # 返回组合数\n",
    "    return numer // denom"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1663740"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from functools import reduce\n",
    "\n",
    "# 计算组合数 C(81, 4)\n",
    "ncr(81, 4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.0% done! Time elapsed = 23.898 seconds.\n",
      "2.0% done! Time elapsed = 47.676 seconds.\n",
      "3.0% done! Time elapsed = 71.318 seconds.\n",
      "4.0% done! Time elapsed = 95.264 seconds.\n",
      "5.0% done! Time elapsed = 119.124 seconds.\n",
      "6.0% done! Time elapsed = 143.103 seconds.\n",
      "7.0% done! Time elapsed = 167.628 seconds.\n",
      "8.0% done! Time elapsed = 191.368 seconds.\n",
      "9.0% done! Time elapsed = 215.287 seconds.\n",
      "10.0% done! Time elapsed = 238.847 seconds.\n",
      "11.0% done! Time elapsed = 262.774 seconds.\n",
      "12.0% done! Time elapsed = 286.556 seconds.\n",
      "13.0% done! Time elapsed = 310.207 seconds.\n",
      "14.0% done! Time elapsed = 334.188 seconds.\n",
      "15.0% done! Time elapsed = 357.928 seconds.\n",
      "16.0% done! Time elapsed = 381.648 seconds.\n",
      "17.0% done! Time elapsed = 405.788 seconds.\n",
      "18.0% done! Time elapsed = 430.618 seconds.\n",
      "19.0% done! Time elapsed = 452.869 seconds.\n",
      "20.0% done! Time elapsed = 476.777 seconds.\n",
      "21.0% done! Time elapsed = 501.432 seconds.\n",
      "22.0% done! Time elapsed = 524.96 seconds.\n",
      "23.0% done! Time elapsed = 548.624 seconds.\n",
      "24.0% done! Time elapsed = 572.289 seconds.\n",
      "25.0% done! Time elapsed = 595.926 seconds.\n",
      "26.0% done! Time elapsed = 619.574 seconds.\n",
      "27.0% done! Time elapsed = 643.914 seconds.\n",
      "28.0% done! Time elapsed = 667.553 seconds.\n",
      "29.0% done! Time elapsed = 691.245 seconds.\n",
      "30.0% done! Time elapsed = 714.891 seconds.\n",
      "31.0% done! Time elapsed = 738.683 seconds.\n",
      "32.0% done! Time elapsed = 762.224 seconds.\n",
      "33.0% done! Time elapsed = 786.007 seconds.\n",
      "34.0% done! Time elapsed = 810.567 seconds.\n",
      "35.0% done! Time elapsed = 834.275 seconds.\n",
      "36.0% done! Time elapsed = 857.926 seconds.\n",
      "37.0% done! Time elapsed = 881.739 seconds.\n",
      "38.0% done! Time elapsed = 905.456 seconds.\n",
      "39.0% done! Time elapsed = 929.003 seconds.\n",
      "40.0% done! Time elapsed = 952.747 seconds.\n",
      "41.0% done! Time elapsed = 976.534 seconds.\n",
      "42.0% done! Time elapsed = 1001.315 seconds.\n",
      "43.0% done! Time elapsed = 1025.129 seconds.\n",
      "44.0% done! Time elapsed = 1048.703 seconds.\n",
      "45.0% done! Time elapsed = 1072.969 seconds.\n",
      "46.0% done! Time elapsed = 1098.791 seconds.\n",
      "47.0% done! Time elapsed = 1123.182 seconds.\n",
      "48.0% done! Time elapsed = 1147.702 seconds.\n",
      "49.0% done! Time elapsed = 1172.249 seconds.\n",
      "50.0% done! Time elapsed = 1196.62 seconds.\n",
      "51.0% done! Time elapsed = 1220.939 seconds.\n",
      "52.0% done! Time elapsed = 1246.327 seconds.\n",
      "53.0% done! Time elapsed = 1270.099 seconds.\n",
      "54.0% done! Time elapsed = 1294.225 seconds.\n",
      "55.0% done! Time elapsed = 1318.48 seconds.\n",
      "56.0% done! Time elapsed = 1342.506 seconds.\n",
      "57.0% done! Time elapsed = 1366.466 seconds.\n",
      "58.0% done! Time elapsed = 1390.709 seconds.\n",
      "59.0% done! Time elapsed = 1415.223 seconds.\n",
      "60.0% done! Time elapsed = 1439.831 seconds.\n",
      "61.0% done! Time elapsed = 1464.091 seconds.\n",
      "62.0% done! Time elapsed = 1488.354 seconds.\n",
      "63.0% done! Time elapsed = 1512.494 seconds.\n",
      "64.0% done! Time elapsed = 1536.246 seconds.\n",
      "65.0% done! Time elapsed = 1561.253 seconds.\n",
      "66.0% done! Time elapsed = 1588.813 seconds.\n",
      "67.0% done! Time elapsed = 1613.74 seconds.\n",
      "68.0% done! Time elapsed = 1638.498 seconds.\n",
      "69.0% done! Time elapsed = 1664.354 seconds.\n",
      "70.0% done! Time elapsed = 1689.004 seconds.\n",
      "71.0% done! Time elapsed = 1713.298 seconds.\n",
      "72.0% done! Time elapsed = 1737.582 seconds.\n",
      "73.0% done! Time elapsed = 1761.911 seconds.\n",
      "74.0% done! Time elapsed = 1786.134 seconds.\n",
      "75.0% done! Time elapsed = 1810.436 seconds.\n",
      "76.0% done! Time elapsed = 1834.794 seconds.\n",
      "77.0% done! Time elapsed = 1859.356 seconds.\n",
      "78.0% done! Time elapsed = 1883.764 seconds.\n",
      "79.0% done! Time elapsed = 1908.816 seconds.\n",
      "80.0% done! Time elapsed = 1933.356 seconds.\n",
      "81.0% done! Time elapsed = 1957.873 seconds.\n",
      "82.0% done! Time elapsed = 1984.959 seconds.\n",
      "83.0% done! Time elapsed = 2009.602 seconds.\n",
      "84.0% done! Time elapsed = 2033.926 seconds.\n",
      "85.0% done! Time elapsed = 2058.322 seconds.\n",
      "86.0% done! Time elapsed = 2082.948 seconds.\n",
      "87.0% done! Time elapsed = 2107.258 seconds.\n",
      "88.0% done! Time elapsed = 2132.214 seconds.\n",
      "89.0% done! Time elapsed = 2157.019 seconds.\n",
      "90.0% done! Time elapsed = 2181.745 seconds.\n",
      "91.0% done! Time elapsed = 2206.365 seconds.\n",
      "92.0% done! Time elapsed = 2230.991 seconds.\n",
      "93.0% done! Time elapsed = 2255.714 seconds.\n",
      "94.0% done! Time elapsed = 2280.274 seconds.\n",
      "95.0% done! Time elapsed = 2306.081 seconds.\n",
      "96.0% done! Time elapsed = 2330.795 seconds.\n",
      "97.0% done! Time elapsed = 2355.46 seconds.\n",
      "98.0% done! Time elapsed = 2380.196 seconds.\n",
      "99.0% done! Time elapsed = 2405.0 seconds.\n",
      "100.0% done! Time elapsed = 2429.799 seconds.\n",
      "Time elapsed = 2429.861 seconds.\n"
     ]
    }
   ],
   "source": [
    "# 计算组合总数和初始化变量\n",
    "numCombinations = ncr(81, 4)\n",
    "combinationCount = 0\n",
    "\n",
    "rules = []\n",
    "numErrors = []\n",
    "startTime = time.time()\n",
    "\n",
    "# 遍历组合的四个特征\n",
    "for c in itertools.combinations(range(81), 4):\n",
    "    i = c[0]; j = c[1]; k = c[2]; l = c[3]\n",
    "    \n",
    "    # 遍历 16 种规则的不同组合\n",
    "    for a in [0, 1]:\n",
    "        for b in [0, 1]:\n",
    "            for c in [0, 1]:\n",
    "                for d in [0, 1]:\n",
    "                    # 计算每种规则的误差和添加到列表\n",
    "                    yHat = np.logical_and(np.logical_and(np.logical_and(trainX[:,i] == a, trainX[:,j] == b), trainX[:,k] == c), trainX[:,l] == d)\n",
    "                    numErrors.append(sum(abs(yHat - trainY)))\n",
    "                    rules.append([i, j, k, l, a, b, c, d])\n",
    "\n",
    "    combinationCount += 1\n",
    "    \n",
    "    # 每完成 1% 输出一次进度更新\n",
    "    if combinationCount % round((0.01 * numCombinations)) == 0:\n",
    "        percentDone = float(len(rules)) / (2**4 * numCombinations) * 100\n",
    "        timeElapsed = time.time() - startTime\n",
    "        print(str(round(percentDone, 0)) + '% done! Time elapsed = ' + str(round(timeElapsed, 3)) + ' seconds.')\n",
    "\n",
    "# 输出总的时间消耗\n",
    "timeElapsed = time.time() - startTime\n",
    "print('Time elapsed = ' + str(round(timeElapsed, 3)) + ' seconds.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "696514"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 找到误差列表中的最小值的索引\n",
    "np.argmin(np.array(numErrors))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If this code finished, you are more patient than I. "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "depth-camera",
   "language": "python",
   "name": "depth-camera"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.16"
  },
  "latex_envs": {
   "bibliofile": "biblio.bib",
   "cite_by": "apalike",
   "current_citInitial": 1,
   "eqLabelWithNumbers": true,
   "eqNumInitial": 0
  },
  "toc": {
   "toc_cell": false,
   "toc_number_sections": true,
   "toc_threshold": 6,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
